Agrupamiento de Registro
Bases de datos-SQL-Sentencias
SQL-Agrupamiento de Registros
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
IdFamilia, Sum(Stock) AS StockActual
FROM
Productos
GROUP BY
IdFamilia
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
IdFamilia, Sum(Stock) AS StockActual
FROM
Productos
GROUP BY
IdFamilia
HAVING
StockActual > 100
AND
NombreProducto Like BOS*
AVG
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
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, Min
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, StDevP
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 Desviación
FROM
Pedidos
WHERE
País = 'España'
SELECT
StDevP(Gastos) AS Desviación
FROM
Pedidos
WHERE
País = 'España'
Sum
Devuelve la suma del conjunto de valores contenido en un campo especifico
de una consulta. Su sintaxis es:
Sum(expr)
En donde expr representa 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, VarP
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
País = 'España'
SELECT
VarP(Gastos) AS Varianza
FROM
Pedidos
WHERE
País = '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 memos 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