Declaración GROUPED BY

Agrupación en múltiples grupos

La declaración GROUP BY <Campos de agrupación> te permite describir el orden de agrupación de los resultados de la consulta.

Los datos iniciales en la consulta se pueden agrupar utilizando funciones de agregación especificadas como campos en la lista de selección. Esto significa que las filas de resultados de la consulta contendrán los resultados de las funciones de agregación especificadas calculadas (agrupadas) de acuerdo con los registros de las tablas de origen.

Especifica las funciones de agregación en la lista de campos de selección; en la declaración GROUP BY <Campos de agrupación> debes especificar una lista de campos por los que agrupar. La consulta agrupará los registros de las tablas de origen con los mismos valores de los campos especificados.

Puedes usar expresiones booleanas en esta cláusula.

La lista de campos de agrupación contiene enlaces a los campos de las tablas de origen: fuentes de la consulta, separados por comas:

GROUP BY <Campos de agrupación>
      |
  <Nombre del campo> [, <Nombre del campo> [, …]]

¡Importante! Al agrupar los resultados de la consulta, la lista de campos de selección puede contener funciones de agregación (obligatorias) y solo campos de agrupación.
La excepción es cuando se aplican funciones de agregación a los campos de una tabla anidada. En este caso, en la lista de campos de selección, es posible acceder a los campos de la tabla de nivel superior sin agrupar los resultados por estos campos.

Cuando se usan funciones de agregación, la declaración GROUP BY puede no indicarse en absoluto; todos los resultados de la consulta se agruparán en una sola línea.

Ejemplo:

// Se requiere obtener estadísticas sobre la venta de productos:
// precios máximos, mínimos y promedio en notas de entrega.

SELECT
   Nota de entrega.Producto,
   PROMEDIO (Nota de entrega.Precio) AS Promedio,
   MAXIMO (Nota de entrega.Precio) AS MAXIMO,
   MINIMO (Nota de entrega.Precio) AS Minimo

FROM
   Documento.Factura.Contenido AS Factura

GROUP BY
   Nota de entrega.Producto

Resultado de la consulta:

Producto

Promedio

 Máximo

 Mínimo

 Pantalones para niños

1 500 

1 500 

1 500 

 Camisa “Cowboy”

800 

800 

800 

 Jeans de mujer

1 520 

1 700 

1 500 

 Suéter para niños

800 

800 

800 

 Fregadero “Lily”

2 250 

2 500 

2 000 

 Moydodyr “Aquarium”

3 166 

4 000 

2 000 

 Mezcladora “Ultra”

1 500 

1 500 

1 500 

 Procesador de alimentos Krups

1 500 

1 500 

1 500 

GROUP BY GROUPING SETS (Agrupación por varios grupos)

Para tablas de nivel superior, se admite el diseño GROUP BY GROUPING SETS, diseñado para agrupar en varios grupos en un solo escaneo de tabla.
El diseño GROUP ALL BY GROUPING SETS es equivalente al diseño COMBINE ALL con las consultas GROUP BY para los grupos indicados. Los campos en la lista de selección que no pertenecen al grupo actual se reemplazan por NULL.

GROUP BY GROUPING SETS ((CamposGrupo1)[, (CamposGrupo2)[,…]])

¡Importante! No se admite el uso de expresiones con dos o más campos en la lista de selección que correspondan a dos o más agrupaciones.

Si seleccionas GROUP BY GROUPING SETS en la declaración ORDER BY, solo puedes usar expresiones de la lista de selección.

Los operadores no son equivalentes:

GROUP BY GROUPING SETS ((RegistroDeHorarioDelPersonal. Departamento, RegistroDeHorarioDelPersonal. Cargo));

y

GROUP BY GROUPING SETS(RegistroDeHorarioDelPersonal. Departamento, RegistroDeHorarioDelPersonal. Cargo);

Ejemplo:

SELECT
SaldoInventario.Producto AS Producto,
SaldoInventario.Almacén AS Almacén,
CANTIDAD(SaldoInventario.CantidadSaldo) AS CantidadSaldo
FROM
RegistroDeAcumulación.SaldoInventario AS SaldoInventario
GROUP BY GROUPING SETS
(
(SaldoInventario.Almacén),
(SaldoInventario.Producto),
(SaldoInventario.Producto, SaldoInventario.Almacén)

El resultado de la consulta incluirá los resultados de las tres consultas (o una consulta combinada). Por lo tanto, se hace referencia a otras formas de obtener resultados. En primer lugar, se trata de aumentar la velocidad de obtención del resultado y la productividad.