PostgreSQL – CONJUNTOS DE AGRUPACIÓN

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *