Unidad 5. Consultas de resumen (I)


5.1. Introducción

Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes de los datos contenidos en las columnas de las tablas.
Para poder llevarlo a cabo la sentencia SELECT consta de una serie de cláusulas específicas (GROUP BY, HAVING), y Transact-SQL tiene definidas unas funciones para poder realizar estos cálculos, las funciones de agregado (también llamadas funciones de columna).
La diferencia entre una consulta de resumen y una consulta de las que hemos visto hasta ahora es que en las consultas normales las filas del resultado se obtienen directamente de las filas del origen de datos y cada dato que aparece en el resultado tiene su dato correspondiente en el origen de la consulta mientras que las filas generadas por las consultas de resumen no representan datos del origen sino un total calculado sobre estos datos. Esta diferencia hará que las consultas de resumen tengan algunas limitaciones que veremos a lo largo del tema.

Un ejemplo sería:

Consulta de resumen

A la izquierda tenemos una consulta simple que nos saca las oficinas con sus ventas ordenadas por región, y a la derecha una consulta de resumen que obtiene la suma de las ventas de las oficinas de cada región

5.2. Las funciones de agregado

Una función de agregado SQL acepta un grupo de datos (normalmente una columna de datos) como argumento, y produce un único dato que resume el grupo. Por ejemplo la función AVG() acepta una columna de datos numéricos y devuelve la media aritmética (average) de los valores contenidos en la  columna.
El mero hecho de utilizar una función de agregado en una consulta, convierte ésta en una consulta de resumen.

Todas las funciones de agregado tienen una estructura muy parecida:


    Función ([ALL|DISTINCT] expression)  

  

El grupo de valores sobre el que actúa la función lo determina el resultado de la expresión que será un nombre de columna o una expresión basada en una columna o varias del origen de datos. En la expresión nunca puede aparecer una función de agregado ni una subconsulta.
La palabra ALL indica que se tiene que tomar en cuenta todos los valores de la columna. Es el valor por defecto.
La palabra DISTINCT hace que se consideren todas las repeticiones del mismo valor como uno sólo (considera valores distintos).
Todas las funciones de agregado se aplican a las filas del origen de datos una vez ejecutada la cláusula WHERE (si la hubiera).
Si exceptuamos la función COUNT, todas las funciones de agregado ignoran los valores NULL.
Una función de agregado puede aparecer en la lista de selección en cualquier lugar en el que puede aparecer un nombre de columna. Puede, por ejemplo, formar parte de una expresión pero no se pueden anidar funciones de agregado.
Tampoco se pueden mezclar funciones de columna con nombres de columna ordinarios. Hay excepciones a esta regla pero cuando definimos agrupaciones y subconsultas que veremos más adelante.

Febrero-2010
Pág. 5.1

Atrás  Inicio  Adelante



.