TEMA 24: 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 ---------------ARIAS FERNANDEZ JIMENO DIAZ JIMENO ZOLA PEREZ GARCIA PEREZ LOPEZ ROMERO ALONSO SEBASTIAN YUSTE TOTAL_PEDIDOS ------------1 1 0 3 0 1 2 SUMA_IMPORTE -----------37.0 88.25 PROMEDIO -------37.0 88.25 MAXIMO -----37.0 88.25 MINIMO -----37.0 88.25 389.78 129.9266 201.55 65.23 125.12 234.58 125.12 117.29 125.12 150.38 125.12 84.2 En nuestro ejemplo, obtenemos siete grupos (Por apellidos) y ahora podemos aplicar el operador agregado COUNT para cada grupo, obteniendo el resultado total de la consulta dada anteriormente. Nótese que para el resultado de una consulta utilizando GROUP BY y operadores agregados para dar sentido a los atributos agrupados, debemos primero obtener la lista objetivo. Los demás atributos que no aparecen en la cláusula GROUP BY se seleccionarán utilizando una función agregada. Por otro lado, no se pueden utilizar funciones agregadas en atributos que aparecen en la cláusula GROUP BY. RESUMEN LECCIÓN 24 Es habitual realizar operación que engloben resumen dentro de una selección de datos, para esto SQL proporciona las palabras: • 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