Вы находитесь на странице: 1из 6

Coach: Ing.

Marko Castillo
Pea
1
BASE DE DATOS
Consultas con Funciones de Agregado
Semestre VII
Docente: Ing. Marko Castillo Pea
El lenguaje SQL est compuesto por comandos, clusulas, operadores y funciones de agregado. Estos
elementos se combinan en las instrucciones para crear, actualizar y manipular las bases de datos.
FUNCIONES DE AGREGADO
Las funciones de agregado se usan dentro de una clusula SELECT en grupos de registros para devolver un
nico valor que se aplica a un grupo de registros:
AVG ==> Utilizada para calcular el promedio de los valores de un campo determinado
COUNT ==> Utilizada para devolver el nmero de registros de la seleccin
SUM==> Utilizada para devolver la suma de todos los valores de un campo determinado
MAX ==> Utilizada para devolver el valor ms alto de un campo especificado
MIN ==> Utilizada para devolver el valor ms bajo de un campo especificado
EJERCICIOS DE APLICACIN
La siguiente base de datos representa la venta de productos
CONSULTAS SUMARIAS
1.- Calculo del total de una columna (SUM)
Calcula el total de una columna de valores de datos. Los datos de la columna deben tener un tipo
numrico (entero, decimal, coma flotante o monetario). El resultado de la funcin SUM() tiene el mismo
tipo de dato bsico que los datos de la columna.
Sintaxis: SUM ( [ Expresin | DISTINCT NombreDeColumna ] )
Coach: Ing. Marko Castillo
Pea
2
Ej: Encontrar la cantidad de piezas suministradas para todos los proyectos.
Select sum(cantidad) fromventas
Resp: 10935
Ej: Encontrar el peso total de todas las piezas suministradas por el proveedor S2 a todos los proyectos.
Select sum(pieza.peso)
frompieza inner join ventas
on pieza.codpie=ventas.codpie where ventas.codpro='S2'
Resp: 12.50
En la consulta anterior podemos darnos cuenta que no se est considerando la cantidad de piezas
suministradas. Para tal caso el peso se debe de multiplicar por la cantidad de piezas suministradas.
Select sum(pieza.peso*ventas.cantidad)
frompieza inner join ventas
on pieza.codpie=ventas.codpie where ventas.codpro='S2'
Resp: 8643.75
2.- Calculo del promedio de una columna (AVG)
Calcula el valor promedio de una columna de valores de datos. Al igual que una funcin SUM(), los datos
de la columna deben tener un tipo numrico. Ya que la funcin SUM() suma los valores de la columna y
luego los divide por el nmero de valores.
Sintaxis: AVG ( [ Expresin | DISTINCT NombreDeColumna ] )
Ej: Encontrar el valor medio (promedio) del peso de todas las piezas.
Select avg(peso) frompieza
Resp: 4.45
3.- Determinacion de valores extremos(MIN y MAX)
Encuentra el valor ms pequeo (MIN) o el valor mayor (MAX) de una columna. Los datos de la columna
pueden contener informacin numrica, de cadena o de fecha/hora. El resultado de estas dos funciones
tiene exactamente el mismo tipo de dato que los datos de la columna.
Sintaxis: MIN (Expresin)
MAX (Expresin)
Ej: Encontrar la cantidad mnima y mxima suministrada.
Select min(cantidad), max(cantidad) fromventas
Resp: 10 y 4500
4.- Cuenta de valores de datos(COUNT)
Cuenta el nmero de valores de datos que hay en una columna. Los datos de la columna pueden ser de
cualquier tipo. Esta funcin siempre devuelve un entero, independientemente del tipo de datos de la
columna.
Sintaxis: COUNT ( [DISTINCT] NombreDeColumna )
Coach: Ing. Marko Castillo
Pea
3
Ej: Encontrar el nmero de envos hechos por el proveedor S3.
Select count(codpro) fromventas where codpro='S3'
Resp: 3
5.- Consultas agrupadas (GROUP BY)
Las consultas sumarias descritas anteriormente son como los totales al final de un informe. Condensan
todos los datos detallados del informe en una nica fila sumaria de datos. Al igual que los subtotales son
tiles en informes impresos, con frecuencia es conveniente sumarizar los resultados de la columna a un
nivel subtotal.
La clusula GROUP BY de la sentencia SELECT proporciona esta capacidad, cuando en la consulta existe
una funcin se resumen, como sum, avg, etc.
Ej: Mostrar un informe donde se muestre el color y la suma de los pesos de las piezas agrupadas por el
color de las piezas.
select color, sum(peso) frompieza group by color
Ej: Encontrar el valor medio de las cantidades suministradas.
Select avg(cantidad) fromventas
Resp: 546
Ej: Encontrar el valor medio de las cantidades suministradas para cada proyecto.
Select codpj, avg(cantidad) fromventas group by codpj
Resp:
Select proyecto.nompj, AVG(ventas.cantidad) Fromventas
Inner Join proyecto On ventas.codpj=proyecto.codpj
group by proyecto.nompj
Coach: Ing. Marko Castillo
Pea
4
Ej: Encontrar el valor medio de las cantidades suministradas por cada proveedor.
SELECT codpro,AVG(cantidad) FROMventas GROUP BY codpro
Ej: Encontrar la cantidad total de cada pieza enviada a cada proyecto. Aqu podemos ver el uso del alias
con la palabra reservada AS seguida del nombre del alias.
Select proyecto.nompj as 'PROYECTO', sum(ventas.cantidad) as 'Nro de Piezas' from
ventas inner join proyecto on ventas.codpj=proyecto.codpj
group by proyecto.nompj
Ej: Encontrar para cada proyecto su nombre y la cantidad media de piezas que se recibe por proveedor.
Select proyecto.nompj, avg(ventas.cantidad)
fromventas inner join proyecto on
ventas.codpj=proyecto.codpj group by proyecto.nompj
Ej: La instruccin Having, tambin es posible utilizarlo si es que queremos un filtrado mas detallado.
Mostrar el color y el peso total de las piezas agrupados por color, pero solo aquellas sumatorias que
superen el peso de 10.
select color, sum(peso) from pieza where peso >2 group by color having
sum(peso)>10
Como podemos ver el Where, primero selecciona aquellas piezas cuyo peso sea mayor a 2, ahora esta
seleccion recien es agrupado por color, pero solo se mostraran aquellas agrupaciones mayores a 10.
6.- TOP: Permite mostrar una cantidad de registros, generalmente trabaja con la instruccin order by.
Ej: Mostrar las tres primera piezas ordenadas en forma ascendente por nombre
select top 3 * from pieza order by nompie asc
Coach: Ing. Marko Castillo
Pea
5
3.- Test de Pertenencia (IN)
Comprueba si el valor de una expresin se corresponde con uno de un conjunto de valores.
Sintaxis: ExpresionDeTest [NOT] IN ( [Constante1, Constante2,...] )
Ej: Encontrar todas las ventas que tengan al menos 10 piezas procedentes de Lima, Lisboa o Roma.
Select ventas.codpro, ventas.codpie, ventas.codpj
frompieza inner join ventas on pieza.codpie=ventas.codpie
where ventas.cantidad>=10 and pieza.ciudad in ('Lima','Lisboa','Roma')
Ej: Encontrar todas las ventas que tengan al menos 10 piezas que no procedan de Lima, Lisboa o Roma.
Select ventas.codpro, ventas.codpie, ventas.codpj
frompieza inner join ventas on pieza.codpie=ventas.codpie
where ventas.cantidad>=10 and pieza.ciudad not in ('Lima','Lisboa','Roma')
X IN (A,B,C)
Es completamente equivalente a:
(X=A) OR (X=B) OR (X=C)
5.- Test de valor NULO
Comprueba si la columna tiene un valor NULL (desconocido).
Sintaxis: NombreDeColumna IS [NOT] NULL
Para verificar esto debemos ingresar un registro con un valor nulo en la ciudad
INSERT INTO proyecto VALUES ('J5','Proyecto 5',null)

INSERT INTO proyecto (codpj,nompj) VALUES ('J5','Proyecto 5')


Coach: Ing. Marko Castillo
Pea
6
Aqu podemos ver el ingreso de un registro nulo, especificando los campos y los valores.
Ej: Encontrar los proyectos que an no tienen asignado una ciudad.
Select * fromproyecto where ciudad is null
Se debe mostrar solo un registro
Ej: Encontrar los proyectos que tienen asignado una ciudad.
Select * fromproyecto where ciudad is not null
COMBINACION DE RESULTADOS DE CONSULTAS
A veces es conveniente combinar los resultados de dos o ms consultas es una nica tabla de resultados
totales. SQL soporta esta capacidad gracias a la caracterstica UNION de la sentencia SQL.
Ej: Encontrar los cdigos de todas las piezas donde la cantidad suministrada sea menor de 100
Select codpie fromventas where cantidad<100
Ej: Encontrar los cdigos de todas las piezas donde el peso de la pieza sea mayor que el de P1.
Select codpie frompieza where
peso>(select peso frompieza where codpie='P1')
Ahora vamos a ver la Union de consultas, uniendo las consultas anteriores
SELECT codpie FROMventas WHERE cantidad<100
UNION
SELECT codpie FROMpieza
WHERE peso>(SELECT peso FROMpieza WHERE codpie='P1')
Por omisin, la operacin UNION elimina las filas duplicadas como parte de su procesamiento. Si se desea
retener las filas duplicadas en una operacin UNION, se puede especificar la palabra clave ALL
inmediatamente a continuacin de la palabra UNION.
SELECT codpie FROMventas WHERE cantidad<100
UNION ALL
SELECT codpie FROMpieza
WHERE peso>(SELECT peso FROMpieza WHERE codpie='P1')

Вам также может понравиться