Agrupamiento de Registros y Funciones Agregadas
La cláusula GROUP BY
Combina los registros con valores idénticos, en la lista de campos
especificados, en un único registro. Para cada registro se crea un valor
sumario si se incluye una función SQL agregada, como por ejemplo
Sum o Count, en
la instrucción SELECT. Su sintaxis es:
SELECT campos FROM tabla WHERE criterio GROUP BY campos del grupo
GROUP BY es opcional. Los valores de
resumen se omiten si no existe una función SQL agregada en la instrucción
SELECT. Los valores Null en los campos
GROUP BY se agrupan y no se omiten. No obstante,
los valores Null no se evalúan en ninguna de las funciones SQL agregadas.
Se utiliza la cláusula WHERE para excluir
aquellas filas que no desea agrupar, y la cláusula
HAVING para filtrar los registros una vez
agrupados.
A menos que contenga un dato Memo u Objeto OLE , un campo de la lista de
campos GROUP BY puede referirse a cualquier campo
de las tablas que aparecen en la cláusula FROM,
incluso si el campo no esta incluido en la instrucción
SELECT, siempre y cuando la instrucción
SELECT incluya al menos una función SQL
agregada.
Todos los campos de la lista de campos de
SELECT deben o bien incluirse en la cláusula
GROUP BY o como argumentos de una función SQL
agregada.
SELECT Id_Familia, Sum(Stock) FROM Productos GROUP BY Id_Familia;
Una vez que GROUP BY ha combinado los
registros, HAVING muestra cualquier registro
agrupado por la cláusula GROUP BY que satisfaga
las condiciones de la cláusula HAVING.
HAVING es similar a WHERE, determina qué
registros se seleccionan. Una vez que los registros se han agrupado utilizando
GROUP BY, HAVING
determina cuales de ellos se van a mostrar.
SELECT Id_Familia Sum(Stock) FROM Productos GROUP BY Id_Familia
HAVING Sum(Stock) > 100 AND NombreProducto Like BOS*;
AVG (Media Aritmética)
Calcula la media aritmética de un conjunto de valores contenidos en un
campo especificado de una consulta. Su sintaxis es la siguiente:
Avg(expr)
En donde expr representa el campo que
contiene los datos numéricos para los que se desea calcular la media o una
expresión que realiza un cálculo utilizando los datos de dicho campo. La media
calculada por Avg es la media aritmética
(la suma de los valores dividido por el número de valores). La función
Avg no incluye ningún campo Null en el cálculo.
SELECT Avg(Gastos) AS Promedio FROM Pedidos WHERE Gastos > 100;
Count (Contar Registros)
Calcula el número de registros devueltos por una consulta. Su sintaxis es
la siguiente:
Count(expr)
En donde expr contiene el nombre del campo
que desea contar. Los operandos de expr pueden
incluir el nombre de un campo de una tabla, una constante o una función (la cual
puede ser intrínseca o definida por el usuario pero no otras de las funciones
agregadas de SQL). Puede contar cualquier tipo de datos incluso texto.
Aunque expr puede realizar un cálculo sobre
un campo, Count simplemente cuenta el número de
registros sin tener en cuenta qué valores se almacenan en los registros. La
función Count no cuenta los registros que tienen
campos null a menos que expr sea el carácter
comodín asterisco (*). Si utiliza un asterisco, Count calcula el número total
de registros, incluyendo aquellos que contienen campos null.
Count(*) es considerablemente más rápida que
Count(Campo). No se debe poner el asterisco entre
dobles comillas ('*').
SELECT Count(*) AS Total FROM Pedidos;
Si expr identifica a múltiples campos, la
función Count cuenta un registro sólo si al menos
uno de los campos no es Null. Si todos los campos especificados son Null, no se
cuenta el registro. Hay que separar los nombres de los campos con ampersand (&).
SELECT Count(FechaEnvío & Transporte) AS Total FROM Pedidos;
Podemos hacer que el gestor cuente los datos diferentes de un determinado campo
SELECT Count(DISTINCT Localidad) AS Total FROM Pedidos;
Max y Min (Valores Máximos y Mínimos)
Devuelven el mínimo o el máximo de un conjunto de valores contenidos en un
campo especifico de una consulta. Su sintaxis es:
Min(expr)
Max(expr)
En donde expr es el campo sobre el que se
desea realizar el cálculo. Expr pueden incluir el nombre de un campo de una
tabla, una constante o una función (la cual puede ser intrínseca o definida por
el usuario pero no otras de las funciones agregadas de SQL).
SELECT Min(Gastos) AS ElMin FROM Pedidos WHERE Pais = 'España';
SELECT Max(Gastos) AS ElMax FROM Pedidos WHERE Pais = 'España';
StDev y StDevP (Desviación Estándar)
Devuelve estimaciones de la desviación estándar para la población (el
total de los registros de la tabla) o una muestra de la población representada
(muestra aleatoria) . Su sintaxis es:
StDev(expr)
StDevP(expr)
En donde expr representa el nombre del
campo que contiene los datos que desean evaluarse o una expresión que realiza
un cálculo utilizando los datos de dichos campos. Los operandos de
expr pueden incluir el nombre de un campo de una
tabla, una constante o una función (la cual puede ser intrínseca o definida por
el usuario pero no otras de las funciones agregadas de SQL).
StDevP evalúa una población, y
StDev evalúa una muestra de la población. Si la
consulta contiene menos de dos registros (o ningún registro para
StDevP), estas funciones devuelven un valor
Null (el cual indica que la desviación estándar no puede calcularse).
SELECT StDev(Gastos) AS Desviacion FROM Pedidos WHERE Pais = 'España';
SELECT StDevP(Gastos) AS Desviacion FROM Pedidos WHERE Pais= 'España';
Sum (Sumar Valores)
Devuelve la suma del conjunto de valores contenido en un campo especifico
de una consulta. Su sintaxis es:
Sum(expr)
En donde expr respresenta el nombre del
campo que contiene los datos que desean sumarse o una expresión que realiza un
cálculo utilizando los datos de dichos campos. Los operandos de
expr pueden incluir el nombre de un campo de una
tabla, una constante o una función (la cual puede ser intrínseca o definida por
el usuario pero no otras de las funciones agregadas de SQL).
SELECT Sum(PrecioUnidad * Cantidad) AS Total FROM DetallePedido;
Var y VarP (Varianza)
Devuelve una estimación de la varianza de una población (sobre el total de
los registros) o una muestra de la población (muestra aleatoria de registros)
sobre los valores de un campo. Su sintaxis es:
Var(expr)
VarP(expr)
VarP evalúa una población, y
Var evalúa una muestra de la población.
Expr el nombre del campo que contiene los datos
que desean evaluarse o una expresión que realiza un cálculo utilizando los datos
de dichos campos. Los operandos de expr pueden incluir el nombre de un campo de
una tabla, una constante o una función (la cual puede ser intrínseca o definida
por el usuario pero no otras de las funciones agregadas de SQL).
Si la consulta contiene menos de dos registros,
Var y VarP
devuelven Null (esto indica que la varianza no puede calcularse). Puede utilizar
Var y VarP en una
expresión de consulta o en una Instrucción SQL.
SELECT Var(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'España';
SELECT VarP(Gastos) AS Varianza FROM Pedidos WHERE Pais = 'España';
COMPUTE de SQL-SERVER
Esta cláusula añade una fila en el conjunto de datos que se está recuperando, se utiliza para realizar
cálculos en campos numéricos. COMPUTE actúa siempre sobre un
campo o expresión del conjunto de resultados y esta expresión debe figurar exactamente igual en la cláusula
SELECT y siempre se debe ordenar el resultado por la misma o al menos
agrupar el resultado. Esta expresión no puede utilizar ningún ALIAS.
SELECT IdCliente, Count(IdPedido) FROM Pedidos
GROUP BY IdPedido HAVING Count(IdPedido) > 20 COMPUTE Sum(Count(IdPedido))
SELECT IdPedido, (PrecioUnidad * Cantidad - Descuento) FROM [Detalles de Pedidos]
ORDER BY IdPedido
COMPUTE Sum((PrecioUnidad * Cantidad - Descuento)) // Calcula el Total
BY IdPedido // Calcula el Subtotal