Está en la página 1de 45

FUNCIONES DE AGREGADO Y CLAUSULAS GROUP

BY/ ORDER BY / HAVING


FUNCIONES DE AGREGADO

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

Si tuviera la siguiente tabla de un modelo relacional.


FUNCIONES DE AGREGADO

Se pide presentar el sueldo mas alto.


Se pide presentar el sueldo mas bajo.
Se pide presentar la suma total de todos los sueldos.
Se pide presentar el promedio de los sueldos.
Se pide presentar cuantos estudiantes hay en todo el colegio.
FUNCIONES DE AGREGADO
Se pide presentar el sueldo mas alto. EN MYSQL
select nombre, max(sueldo)from empleado;
Se pide presentar el sueldo mas bajo.
select nombre, min(sueldo) from empleado
Se pide presentar la suma total de todos los sueldos.
select sum(sueldo) from empleado
Se pide presentar el promedio de los sueldos.
Select avg(sueldo) from empleado
Se pide presentar cuantos empleados hay en la empresa.
select count(*) from empleado
CLAUSULAS GROUP BY / HAVING/ ORDER BY

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

Agrupar los estudiantes por curso y paralelo


Select curso, paralelo, nombre,apellido
From estudiante
Group by curso, paralelo, nombre,apellido
CLAUSULAS GROUP BY
CLAUSULAS GROUP BY

Agrupar los libros por editoriales


Select editorial,titulo,isbn
From libro
Group by editorial,titulo,isbn
GROUP BY / FUNCIONES DE AGREGADO

Presentar cuantos estudiantes hay por curso.


Select curso, count (*)
From estudiante
Group by curso
GROUP BY / FUNCIONES DE AGREGADO
GROUP BY / FUNCIONES DE AGREGADO

Presentar cuantas copias hay por libro.


Select idlibro, count (*) as numero_copias
From ejemplares
Group by idlibro
GROUP BY / FUNCIONES DE AGREGADO
GROUP BY / FUNCIONES DE AGREGADO

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

Presentar el nombre y el sueldo del empleado que gana mas


select nombre,sueldo from empleado
where sueldo =(select max(sueldo) from empleado)
EJERCICIOS

Presentar cuantos empleados trabajan en la librera. (Numero_empleados)


Presentar cuantas copias del libro fundamentos de java hay. (Titulo, numero_copias)
Presentar cuantas copias del libro fundamentos de java hay, pero disponibles. (Titulo, numero_copias)
Presentar el apellido , nombre y sueldo del empleado que gane MENOS.
Presentar el numero de prestados, que se han efectuado en el mes de Agosto del presente ao.
(Numero_prestamos).
Presentar cuantos prestamos a realizado el cliente con cedula 1234567890, en lo que de ao en curso.
(Apellido, nombre, Numero de Prestamos).
EJERCICIOS

Presentar el nombre , apellido del empleado que gane mas.


Presentar el total de libros o ejemplares que hay en la librera.
(Cantidad_Ejemplares).
Presentar cuantas copias o ejemplares hay por libro. (Titulo_libro, cantidad).
Presentar cuantas copias o ejemplares hay de libro de Fundamentos_Base_Datos.
(Titulo_libro, numero_copias)
Presentar el costo de todas las copias del libro Java. (Titulo_Libro, Costo).
CLAUSULA ORDER BY

Me permite ordenar registro de manera ascendente o descendente.


Select columna1,columna2,columnan
From Tabla(s)
Order by (columna) desc/asc
CLAUSULA ORDER BY

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 apellido, nombres, sueldo de los empleados ordenados alfabticamente


por apellidos de manera ascendente.
Presentar los apellido, nombres, sueldo de los empleados ordenados por el sueldo de
manera descendente.
SELECT COLUMNA(S), FUNCION(S) AGREGADO
FROM TABLA(S)
WHERE
GROUP BY
ORDER BY
CLAUSULA LIMIT

Esta clausula me permite seleccionar n registros de una consulta.


EJEMPLO:

Se pide consultar el empleado el cual tenga el sueldo mas alto presentar


apellido, nombre , sueldo.
SELECT apellido, nombre, sueldo
From empleado
Order by sueldo desc
LIMIT 1;
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

Presentar cuantas materias se dictan en Noveno , campos a presentar (cdigo_curso,


numero de materias)
Presentar cuantas materias dicta cada profesor. Campos a
presentar(cedula,numero_materias)
Presentar el profesor que gana menos sueldo. Campos a presentar( nombre,sueldo)
Presentar cuantas materias se dictan en Noveno , campos a presentar (nombre_curso,
numero de materias)
Presentar cuantas materias dicta cada profesor. Campos a presentar(nombre_profesor,
numero_materias)
CLAUSULA HAVING

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 NUMERO TOTAL DE PRODUCTOS QUE HAY EN LA TIENDA.


PRESENTAR ORDENADO POR APELLIDO (ASC) LOS DATOS DE TODOS LOS EMPLEADOS.
PRESENTAR EL NUMERO DE PRODUCTOS , QUE ME SUMINISTRA CADA PROVEEDOR (CAMPOS A
PRESENTAR NOMBRE_PROVEEDOR , CANTIDAD PRODUCTO).
PRESENTAR LA SUMA TOTAL VENDIDA POR CADA EMPLEADO. (CAMPOS A PRESENTAR
NOMBRE_EMPLEADO, TOTAL_VENDIDO).
PRESENTAR AQUELLOS EMPLEADOS QUE HAYAN FACTURADO MAS DE 1000 DLARES CAMPOS A
PRESENTAR NOMBRE_EMPLEADO, MONTO_FACTURADO.
PRESENTAR EL NUMERO DE COMPRAS EFECTUADAS POR CADA CLIENTE. CAMPOS A PRESENTAR
NOMBRE_CLIENTE , NUMERO_COMPRAS.
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)

Ejemplo de manejo de fechas con MySQL:


Obtener la fecha y hora actual del sistema:
SELECT now(); resultado 2016-11-17 10:50:43
Obtener slo la fecha actual del sistema:
SELECT curdate();
resultado 2016-11-17
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:

SELECT YEAR (fecha_pago); esta funcin retorna 2013


SELECT MONTH (fecha_pago); el resultado es 04
SELECT DAY (fecha_pago); da como resultado 15
SELECT TIME (fecha_pago); el resultado de esta funcin es 11:25:21
SELECT MONTHNAME (fecha_pago): resultado es april
RESTAR DOS FECHAS (DATEDIFF)

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

Estas funciones sirven para sumar o restar das a una fecha


DATE_ADD(fecha,INTERVAL valor tipo), DATE_SUB(fecha,INTERVAL valor tipo)
Sumar tiempo en MySQL
SELECT DATE_ADD(NOW(),INTERVAL 20 DAY); # Agrega 20 das a la fecha actual
SELECT DATE_ADD(NOW(),INTERVAL 30 MINUTE); # Agrega 30 minutos a la fecha actual
SELECT DATE_ADD(NOW(),INTERVAL 50 YEAR); #Agrega 50 aos a la fecha actual
SELECT DATE_ADD(NOW(),INTERVAL '10-5' YEAR_MONTH); #Agrega 10 aos 5 meses a la fecha actual
RESTAR TIEMPO EN MYSQL

SELECT DATE_SUB(NOW(),INTERVAL 8 YEAR); #Resta 8 aos a la fecha actual


SELECT DATE_SUB(NOW(),INTERVAL 24 HOUR); #Resta 24 horas a la fecha actual
SELECT DATE_SUB(NOW(),INTERVAL '7-2' YEAR_MONTH); #Resta 7 aos dos meses a la fecha actual

También podría gustarte