Consultas Y Resumenes En SQL
Enviado por derleylda • 22 de Octubre de 2012 • 493 Palabras (2 Páginas) • 570 Visitas
CONSULTAS RESUMEN
OBJETIVOS DEL TEMA:
• Realizar consultas basadas en datos calculados globalmente dentro de
una tabla
1.- CONSULTAS RESUMEN:
Es usual querer saber cuantos pedidos tiene un cliente en un periodo de
tiempo, cuál ha sido el promedio de ventas de un proveedor en un año, etc,
SQL proporciona una serie de operadores que permiten realizar estas
operaciones. Los Operadores Agregados son :
• AVG : Promedio de los valores seleccionados
• COUNT : Total de valores seleccionados
• SUM : Suma de valores seleccionados
• MIN : El valor mínimo de los valores seleccionados
• MAX : El valor máximo de los valores seleccionados
que toman el nombre de un atributo como argumento. El valor del operador
agregado se calcula sobre todos los valores de la columna especificada en la
tabla completa. Si se especifican grupos en la consulta, el cálculo se hace sólo
sobre los valores de cada grupo, es decir SQL nos permite particionar las
tuplas de una tabla en grupos. En estas condiciones, los operadores agregados
descritos antes pueden aplicarse a los grupos (es decir, el valor del operador
agregado no se calculan sobre todos los valores de la columna especificada,
sino sobre todos los valores de un grupo. El operador agregado se calcula
individualmente para cada grupo).
El particionamiento de las tuplas en grupos se hace utilizando las
palabras clave GROUP BY seguidas de una lista de atributos que definen los
grupos. Si tenemos GROUP BY A1, ..., Ak habremos particionado la relación
en grupos, de tal modo que dos tuplas son del mismo grupo si y sólo si tienen
el mismo valor en sus atributos A1, ..., Ak.
En el siguiente ejemplo vamos a mostrar para cada cliente el número
total de pedidos, el importe total, el importe medio de cada pedido, así como el
pedido de mayor importe y menor importe. La consulta sería;
SELECT CLIENTE.APELLIDOS, COUNT( PEDIDO.IMPORTE )
TOTAL_PEDIDOS, SUM( PEDIDO.IMPORTE ) SUMA_IMPORTES, AVG(
CAST(PEDIDO.IMPORTE AS FLOAT)) PROMEDIO, MAX(
PEDIDO.IMPORTE ) MAXIMO, MIN( PEDIDO.IMPORTE) MINIMO
FROM CLIENTE
LEFT OUTER JOIN PEDIDO ON (PEDIDO.DNI = CLIENTE.DNI)
GROUP BY CLIENTE.APELLIDOS
ORDER BY CLIENTE.APELLIDOS;
APELLIDOS TOTAL_PEDIDOS SUMA_IMPORTE PROMEDIO MAXIMO MINIMO
---------------- ------------- ------------ -------- ------ ------
ARIAS FERNANDEZ 1 37.0 37.0 37.0 37.0
JIMENO DIAZ 1 88.25 88.25 88.25 88.25
JIMENO ZOLA 0
PEREZ GARCIA 3 389.78 129.9266 201.55 65.23
PEREZ LOPEZ 0
ROMERO ALONSO 1 125.12 125.12 125.12 125.12
SEBASTIAN YUSTE 2 234.58 117.29 150.38 84.2
En nuestro ejemplo, obtenemos
...