Rollup MySQL

Rollup MySQL
La base de datos de MySQL contiene muchas tablas relacionadas para almacenar datos. A veces requiere obtener el resumen de datos utilizando una o más tablas. La característica de acumulación de MySQL se utiliza para generar este tipo de datos que pueden contener el total o subtotal de uno o más campos de la tabla. El subtotal de los datos se puede calcular fácilmente utilizando una declaración de rollo simple sin usar unión en la consulta. Además, las filas totales y subtotales se pueden agregar al contenido de la tabla utilizando esta declaración. Se han descrito diferentes usos del rollo en la consulta en este tutorial.

Sintaxis:

El rollo se utiliza para crear un grupo de columnas. Entonces, cualquier función agregada de MySQL y Group by Claus. La sintaxis del encierro se muestra a continuación. Los nombres de campo de la tabla que se utilizarán después de la cláusula de selección se utilizarán con el grupo por cláusula para agrupar.

Seleccionar Field1, Field2 AggregateFunction (Field3)
Del nombre de tabla
Grupo de Field1, Archived2 con Rollup;

Usos de la instrucción Rollup en la consulta seleccionada:

Se han mostrado diferentes usos de la declaración de rollup con la cláusula de grupo en la consulta selecta en este tutorial.

Requisitos previos:

Debe crear una tabla de base de datos con datos en una base de datos MySQL para verificar el uso de la instrucción Rollup con el grupo por cláusula en MySQL. Abra el terminal y conéctese con el servidor MySQL ejecutando el siguiente comando.

$ sudo mysql -u root

Ejecute el siguiente comando para crear una base de datos llamada test_db.

Crear base de datos test_db;

Ejecute el siguiente comando para seleccionar la base de datos.

Usar test_db;

Ejecute la siguiente consulta para crear una tabla llamada Sales_persons con cuatro campos.

Crear tabla sales_persons (
ID int Auto_Increment Key primario,
Nombre Varchar (30) No nulo,
Envíe un correo electrónico a Varchar (50),
contact_no varchar (30));

Ejecute la siguiente consulta para insertar tres registros en el ventas_person mesa.

Insertar en 'Sales_persons' ('id', 'nombre', 'correo electrónico', 'contact_no') valores (nulo, 'kamal Hasan', '[email protected] ',' 0191275634 '),
(NULL, 'Nila Hossain', '[email protected] ',' 01855342357 '),
(NULL, 'Abir Hossain', '[email protected] ',' 01634235698 ');

Ejecute la siguiente consulta para crear una tabla llamada ventas con cuatro campos que contiene una clave extranjera que crea una relación de uno a muchos con el Sales_persons mesa al ventas mesa.

Crear ventas de mesa (
ID int no la clave primaria nula,
Sales_date fecha no nula, cantidad int,
sp_id int,
Restricción FK_SP Clave externa (SP_ID)
Referencias Sales_persons (ID)
En Eliminar Cascade en actualización Cascade);

Ejecute la siguiente consulta para insertar cuatro registros en el ventas mesa.

Insertar en 'ventas' ('id', 'sales_date', 'cantidad', 'sp_id') valores
(90, '2021-11-09', 800000, 1),
(34, '2020-12-15', 563400, 3),
(67, '2021-12-23', 900000, 1),
(56, '2020-12-31', 6700000, 1);

Ejemplo-1: Crear informe resumido sin usar la declaración de rollo

La siguiente consulta selecta calculará el informe resumido del monto total de ventas de cada vendedor y el monto general de ventas de todas las ventas mediante el uso de un sindicato con dos consultas selectas. Una consulta selecta recuperará el nombre del vendedor y las ventas totales de ese vendedor. Otra consulta calculará las ventas de todos los vendedores. Ejecutar la siguiente consulta desde el mensaje MySQL.

Seleccionar nombre, suma (cantidad) como total
De ventas, sales_persons
Donde las ventas.sp_id = sales_persons.identificación
Grupo por SP_ID
Unión todos
Seleccionar nulo, suma (ventas.cantidad) como total
De ventas;

Producción:

La siguiente salida aparecerá después de ejecutar la consulta anterior. Hay un registro para el vendedor llamado 'Abir Hossain' con el valor de identificación 3 en el ventas tabla, y la cantidad es 563400. Hay tres registros para el vendedor llamado 'Kamal Hasan' con el valor de identificación, 1 en la tabla de ventas, y el monto total de ventas es 8400000. La suma de todo el monto de las ventas es 563400+8400000 = 8963400.

Producción:


La siguiente salida aparecerá después de ejecutar la consulta anterior. El campo de nombre mostrará el valor nulo de la fila que contiene la cantidad total.

Ejemplo-2: uso de rollup con una función de campo y suma ()

La salida generada en el ejemplo anterior se puede generar fácilmente utilizando la instrucción de rollo que se ha mostrado en este ejemplo. La consulta seleccionada que se ha utilizado para contar el monto total de ventas de todos los vendedores en el ejemplo anterior no se requiere en la siguiente consulta debido a la declaración de revuelta. El campo Nombre del ventas La tabla se ha utilizado con la función agregada en la consulta selecta. El grupo de cláusula contiene el campo de nombre con la declaración de rollo.

Seleccionar nombre, suma (cantidad) como total
De ventas, sales_persons
Donde las ventas.sp_id = sales_persons.identificación
Grupo por nombre con rollup;

Producción:

La siguiente salida aparecerá después de ejecutar la consulta anterior. Al igual que el ejemplo anterior, el campo de nombre mostrará el valor nulo de la fila que contiene la cantidad total.

Ejemplo-3: Uso de la función Rollup with Year () junto con la función Sum ()

El uso de cualquier función incorporada MySQL con la función agregada para usar la instrucción Rollup se ha mostrado en este ejemplo. La siguiente consulta selecta mostrará el informe resumido del monto de las ventas en función del año de ventas. La función de año () se ha utilizado en la consulta para averiguar el valor del año de la fecha de venta. Según los datos insertados de la tabla de ventas, hay dos entradas para 2020 y dos entradas para el año 2021.

Seleccionar año (sales_date), suma (cantidad) como total
De las ventas
Grupo por año (Sales_Date) con Rollup;

Producción:

La siguiente salida aparecerá después de ejecutar la consulta anterior. El monto total de ventas para el año 2020 es 563400+6700000 o 7263400. El monto total de ventas para el año 2021 es 800000+900000 o 1700000. El total de 7263400+1700000 es 8963400.

Conclusión:

Muchas consultas complejas se pueden implementar fácilmente utilizando la instrucción Rollup. Los usos de esta declaración se han demostrado utilizando múltiples tablas en este tutorial para ayudar a los nuevos usuarios de MySQL.