PostgreSQL – ACUMULACIÓN

PostgreSQL ROLLUP pertenece a la cláusula GROUP BY que proporciona un atajo para definir múltiples conjuntos de agrupación . Múltiples columnas agrupadas forman un conjunto de grupo.

A diferencia de la subcláusula CUBE , ROLLUP no genera todos los conjuntos de agrupación posibles en función de las columnas especificadas. Simplemente hace un subconjunto de esos. El ROLLUP presupone una jerarquía entre las columnas de entrada y produce todos los conjuntos de agrupación que tienen sentido solo si se considera la jerarquía. Es por eso que ROLLUP generalmente se usa para generar los subtotales y el total general para los informes.

Sintaxis:

SELECT
    column1,
    column2,
    column3,
    aggregate(column4)
FROM
    table_name
GROUP BY
    ROLLUP (column1, column2, column3);

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 utiliza la subcláusula ROLLUP para encontrar la cantidad de productos vendidos por nombre_del_curso (subtotal) y por todos los nombres y segmentos del curso (total) de la siguiente manera:

SELECT
    course_name,
    segment,
    SUM (quantity)
FROM
    geeksforgeeks_courses
GROUP BY
    ROLLUP (course_name, segment)
ORDER BY
    course_name,
    segment;

Producción:

Ejemplo 2:
La siguiente instrucción realiza un ROLL UP parcial de la siguiente manera:

SELECT
    segment,
    course_name,
    SUM (quantity)
FROM
    geeksforgeeks_courses
GROUP BY
    segment,
    ROLLUP (course_name)
ORDER BY
    segment,
    course_name;

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 *