En PostgreSQL , los GROUPING SETS se utilizan para generar un conjunto de resultados equivalente al generado por UNION ALL de las múltiples cláusulas GROUP BY . Un conjunto de agrupación es un conjunto de columnas por las que se agrupa el usuario. Por lo general, una única consulta agregada define un único conjunto de agrupación.
Sintaxis para CONJUNTOS DE AGRUPACIÓN –
SELECT column1, column2, aggregate_function(column3) FROM table_name GROUP BY GROUPING SETS ( (column1, column2), (column1), (column2), () );
Para comprender mejor el concepto, creemos una nueva tabla y pasemos a los ejemplos.
Para crear una tabla de muestra, use el siguiente comando:
CREATE TABLE geeksforgeeks_courses( course_name VARCHAR NOT NULL, segment VARCHAR NOT NULL, quantity INT NOT NULL, PRIMARY KEY (course_name, segment) );
Ahora inserte algunos datos en él usando el siguiente comando:
INSERT INTO geeksforgeeks_courses(course_name, segment, quantity) VALUES ('Data Structure in Python', 'Premium', 100), ('Algorithm Design in Python', 'Basic', 200), ('Data Structure in Java', 'Premium', 100), ('Algorithm Design in Java', 'Basic', 300);
Ahora que nuestra mesa está puesta, veamos ejemplos.
Ejemplo 1:
la siguiente consulta define un conjunto de agrupación de nombre_del_curso y segmento. Devuelve el número de productos vendidos por marca y segmento.
SELECT course_name, segment, SUM (quantity) FROM geeksforgeeks_courses GROUP BY course_name, segment;
Producción:
Ejemplo 2:
la siguiente consulta encuentra la cantidad de cursos vendidos por nombre_del_curso. Define un conjunto de agrupación del nombre_del_curso:
SELECT course_name, SUM (quantity) FROM geeksforgeeks_courses GROUP BY course_name;
Producción:
Ejemplo 3:
La siguiente consulta encuentra el número de productos vendidos por segmento. Define un conjunto de agrupación del segmento:
SELECT segment, SUM (quantity) FROM geeksforgeeks_courses GROUP BY segment;
Producción:
Ejemplo 4:
en la siguiente consulta, generaremos un solo conjunto de resultados con los agregados para todos los conjuntos de agrupación.
SELECT GROUPING(course_name) grouping_course, GROUPING(segment) grouping_segment, course_name, segment, SUM (quantity) FROM geeksforgeeks_courses GROUP BY GROUPING SETS ( (course_name, segment), (course_name), (segment), () ) ORDER BY course_name, segment;
Producción:
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA