Funciones de Agregado Y Clausula GroupBy
Funciones de Agregado Y Clausula GroupBy
Funciones de Agregado Y Clausula GroupBy
Las funciones de agregacin son muy tiles y por lo general se aplican a una sola columna de
una tabla , entre ellas tenemos.
Funcin Descripcin
Count (*) Sirve para contar el nmeros de registros
en una consulta se aplica a todas las
columnas.
Sum(columna) Calcula la suma de una columna
Min(columna) Encuentra el valor mnimo en una
columna.
Max(columna) Encuentra el valor mximo en una
columna.
Avg (columna) Calcula el valor medio o promedio de
una columna.
FUNCIONES DE AGREGADO
Group by
Esta clausula me permite agrupar uno o mas conjunto de filas.
SELECT COLUMNA1,COLUMNA2,COLUMNAN
FROM
GROUP BY COLUMNA1, COLUMNA2, COLUMNAN
Los datos seleccionados en la sentencia "Select" que lleva el "Group By" deben ser:
Una constante.
Una funcin de grupo (SUM, COUNT, AVG)
Una columna expresada en el Group By.
CLAUSULAS GROUP BY
Presentar cuantas copias hay por libro campos a presentar (idlibro, titulo, numero_copias).
Select libro_idlibro,titulo, count(*) as numero_copias
From ejemplares,libro
where libro_idlibro=idlibro
Group by libro_idlibro,titulo;
GROUP BY / FUNCIONES DE AGREGADO
Se desea presentar los apellidos y nombres de todos los clientes ordenados por apellido.
Select apellido,nombre
From cliente
Order by apellido
EJERCICIOS
Presentar los 2 empleados que tengan los sueldos mas altos. (Apellido,
nombre, Sueldo) (Use Limit).
Presentar el libro que mas veces se ha prestado. (Titulo_libro,
numero_prestamos).
EJERCICIOS
La clusula Having se emplea para controlar cual de los conjuntos de filas se visualiza. Se
evala sobre la tabla que devuelve el Group By, No puede existir sin Group By.
Having es similar al Where, pero trabajo con grupos de filas; pregunta por una caracterstica
de grupo, es decir, pregunta por los resultados de las funciones de grupo, lo cual Where no
pude hacer.
Select columna1,columna2,columnan
From tabla
Group by columna1,columna2,columnan
Having (condicion)
CLAUSULA HAVING
Se desea presentar cuantos productos me suministra cada proveedor, pero solo me interesan aquellos
proveedores que me suministren mas de 1 producto.
select idProveedor,count(*)as total_producto
from producto
group by idProveedor
having total_producto>1
SINTAXIS GENERAL DE UNA CONSULTA
SELECT COLUMNA1,COLUMNA2,COLUMNAN
FROM TABLA(S)
WHERE CONDICION
GROUP BY COLUMNA(S)
HAVING CONDICION
ORDER BY COLUMNA(S)
MODELO LGICO REGISTRO DE VENTAS PRODUCTOS
LECCIN #3 FUNCIONES DE AGREGADO/GROUP BY/ORDER
BY/HAVING
Presentar todos los empleados ordenados por apellido, de manera ascendente.
Presentar el detalle de la venta con id=1 , Campos a presentar
(Idventa,Nombre_producto,precio,cantidad y monto) .
Presentar lo que cada empleado a facturado , es decir , la suma de toda sus ventas.
Campos a presentar nombre_empleado, suma_total.
Contar el numero de producto, que me suministra cada proveedor, adems
ordenarlos por el numero de productos de manera ascendente. Campos a presentar
nombre_proveedor.,Numero_productos
PRESENTAR EL NOMBRE DEL EMPLEADO QUE MAS VENTAS HAYA REGISTRADO. CAMPOS A
PRESENTAR NOMBRE_EMPLEADO, NUMERO_VENTAS.
REGISTROS
Ingresar 3 empleados
Ingresar 5 clientes
Ingresar 3 proveedores
Ingresar 3 productos x proveedor
Registrar 5 compras. (Todos los empleados deben haber registrado compra/venta). En la
compra 1 se debe registrar 3 productos, en la compra 2 uno, en la compra 3 dos
productos, en la compra 4 dos productos , en la compra 5 un solo producto.
REALIZAR LAS SIGUIENTES CONSULTAS
PRESENTAR EL NOMBRE DEL EMPLEADO QUE MAS VENTAS HAYA REGISTRADO. CAMPOS A PRESENTAR
NOMBRE_EMPLEADO, NUMERO_VENTAS.
PRESENTAR EL NOMBRE DEL CLIENTE QUE MAS COMPRAS HAYA EFECTUADO. CAMPOS A PRESENTAR
NOMBRE_CLIENTE, NUMERO_COMPRAS.
OPERADOR LIKE
El operador like se lo utiliza para buscar coincidencias en una cadena ,y se lo usa por lo
general con la clausula where.
Sintaxis like:
Like patrn
Los comodines ms usados son los siguientes:
? representa un carcter cualquiera
(%My Sql) (*, SqlServer) representa cero o ms caracteres
# representa un dgito cualquiera (0-9)
OPERADOR LIKE
Ejemplo
Presentar todos los empleado cuyos apellidos empiecen por las letras cas
Select apellido , nombre
From empleado
Where apellido like cas%
OPERADOR LIKE
Ejemplo
Presentar todos los empleados cuyos apellidos terminen con las letras on.
Select apellido, nombre
From empleado
Where apellido like %on
OPERADOR LIKE
Ejemplo
Presentar todos los empleados cuyos apellidos contenga la letra A en la tercera ubicacin.
Select apellido, nombre
From empleado
Where apellido like ? ?A%
FUNCIONES MANEJO DE FECHA (MYSQL)
Por ejemplo si se tiene una tabla con un campo llamado fecha pago que es tipo DATETIME y
que tiene almacenado el valor 2013-04-15 11:25:21 para extraer cada parte de la fecha se
ejecutan las siguientes instrucciones:
La funcin DATEDIFF en MySQL permite obtener la diferencia en DIAS entre dos fechas distintas. Es muy
til para encontrar los rangos entre plazos establecidos o para hallar la edad actual de una persona. El valor
retornado es tipo entero.
SINTAXIS EN MYSQL
DATEDIFF(fechaFinal,fechaInicial)
MySQL
SELECT DATEDIFF(2014-01-14,2010-03-23)
Resultado 1393
EJERCICIOS
Presentar los 5 primeros empleados de la empresa, los mismos deben estar ordenados por apellido de
forma ascendente.
Presentar todos los empleados cuyos apellidos empiecen con la letra a
Presentar todos los empleados que cumplen aos en el mes de enero. Campos a presentar apellidos,
nombres, fecha de nacimiento.
Presentar todos los empleados que cumplen aos en el me actual. Campos a presentar apellidos,
nombres, fecha de nacimiento.
Presentar los montos totales de las ventas del mes de diciembre de los ltimos 5 aos. Campos a
presentar Nombre de Mes, Monto, Ao.
Presentar la edad actual de cada empleado. Campos a presentar Apellido, nombre, fecha nacimiento, edad
DATE_ADD O DATE_SUB EN MYSQL