MySQL Rollup

MySQL Rollup
La base de données MySQL contient de nombreuses tables connexes pour stocker des données. Parfois, cela nécessite d'obtenir le résumé des données en utilisant une ou plusieurs tables. La fonctionnalité MySQL Rollup est utilisée pour générer ce type de données qui peut contenir le total ou le sous-total d'un ou plusieurs champs de la table. Le sous-total des données peut être calculé facilement en utilisant une instruction RALUP simple sans utiliser Union dans la requête. De plus, des lignes totales et subtotales peuvent être ajoutées au contenu du tableau en utilisant cette instruction. Différentes utilisations de Rollup dans la requête ont été décrites dans ce tutoriel.

Syntaxe:

Le rollup est utilisé pour créer un groupe de colonnes. Ainsi, toute fonction globale de MySQL et Group by clause est utilisée dans la requête sélectionnée où le rollup est utilisé. La syntaxe du rouleau est illustrée ci-dessous. Les noms de champ du tableau qui seront utilisés après la clause de sélection seront utilisés avec la clause Group By pour le regroupement.

Sélectionnez Field1, Field2 AggregateFunction (Field3)
De la table
Groupe par Field1, déposé 2 auprès de Rollup;

Utilisations de l'instruction ROLLUP dans la requête sélectionnée:

Différentes utilisations de l'instruction ROLLUP avec la clause Group By dans la requête SELECT ont été affichées dans ce tutoriel.

Conditions préalables:

Vous devez créer une table de base de données avec des données dans une base de données MySQL pour vérifier l'utilisation de l'instruction ROLLUP avec la clause Group By dans MySQL. Ouvrez le terminal et connectez-vous avec le serveur MySQL en exécutant la commande suivante.

$ sudo mysql -u racine

Exécutez la commande suivante pour créer une base de données nommée test_db.

Créer une base de données test_db;

Exécutez la commande suivante pour sélectionner la base de données.

Utilisez test_db;

Exécutez la requête suivante pour créer un tableau nommé Sales_persons avec quatre champs.

Créer une table Sales_persons (
id int Auto_increment Clé primaire,
nom varchar (30) pas null,
Email Varchar (50),
contact_no varchar (30));

Exécutez la requête suivante pour insérer trois enregistrements dans le vendeur tableau.

Insérer dans 'Sales_Persons' ('Id', 'Name', 'Email', 'Contact_No') VALEURS (NULL, 'KAMAL HASAN', 'KAMAL @ GMAIL.com ',' 0191275634 '),
(Null, «Nila Hossain», «Nila @ gmail.com ',' 01855342357 '),
(Null, 'Abir Hossain', 'Abir @ Yahoo.com ',' 01634235698 ');

Exécutez la requête suivante pour créer un tableau nommé ventes avec quatre champs qui contient une clé étrangère qui crée une relation un à plusieurs avec le Sales_persons table à la ventes tableau.

Créer des ventes de tables (
id int not null clé primaire,
Sales_date Date pas nul, montant int,
sp_id int,
Contrainte FK_SP Foreign Key (SP_ID)
Références Sales_persons (ID)
Sur Delete Cascade sur Update Cascade);

Exécutez la requête suivante pour insérer quatre enregistrements dans le ventes tableau.

Insérer dans les valeurs «Sales» («Id», «Sales_date», «Montant», «SP_ID»)
(90, '2021-11-09', 800000, 1),
(34, «2020-12-15», 563400, 3),
(67, '2021-12-23', 900000, 1),
(56, «2020-12-31», 6700000, 1);

Exemple-1: Créer un rapport de résumé sans utiliser une instruction ROLLUP

La requête de sélection suivante calculera le rapport de résumé du montant total des ventes de chaque vendeur et le montant global des ventes de toutes les ventes en utilisant Union tous avec deux requêtes sélectionnées. Une requête sélectionnée récupérera le nom du vendeur et les ventes totales de ce vendeur. Une autre requête calculera les ventes de tous les vendeurs. Exécutez la requête suivante de l'invite MySQL.

Sélectionnez le nom, la somme (montant) comme total
À partir des ventes, Sales_persons
Où les ventes.SP_ID = Sales_Persons.identifiant
Groupe par SP_ID
Union All
Sélectionnez Null, SUM (ventes.montant) comme total
Des ventes;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. Il y a un dossier pour le vendeur nommé «Abir Hossain» avec l'ID Valeur 3 dans le ventes table, et le montant est de 563400. Il y a trois enregistrements pour le vendeur nommé «Kamal Hasan» avec la valeur d'identification, 1 dans le tableau des ventes, et le montant total des ventes est de 8400000. La somme de tous les montants de vente est de 563400 + 8400000 = 8963400.

Sortir:


La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. Le champ de nom affichera la valeur nul pour la ligne qui contient le montant total.

Exemple-2: Utilisation de Rollup avec un champ et une fonction SUM ()

La sortie générée dans l'exemple précédent peut être générée facilement en utilisant l'instruction ROLLUP qui a été affichée dans cet exemple. La requête sélectionnée qui a été utilisée pour compter le montant total des ventes de tous les vendeurs dans l'exemple précédent n'est pas requise dans la requête suivante en raison de l'utilisation de l'instruction ROLLUP. Le champ de nom du ventes La table a été utilisée avec la fonction agrégée dans la requête sélectionnée. La clause Group By contient le champ de nom avec l'instruction ROLLUP.

Sélectionnez le nom, la somme (montant) comme total
À partir des ventes, Sales_persons
Où les ventes.SP_ID = Sales_Persons.identifiant
Groupe par nom avec Rollup;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. Comme l'exemple précédent, le champ de nom affichera la valeur nul pour la ligne qui contient le montant total.

Exemple-3: utilisation de la fonction Rollup avec année () à côté de la fonction sum ()

L'utilisation de toute fonction intégrée MySQL avec la fonction agrégée pour l'utilisation de l'instruction ROLUP a été affichée dans cet exemple. La requête sélectionnée suivante affichera le rapport de résumé du montant des ventes en fonction de l'année de vente. La fonction année () a été utilisée dans la requête pour découvrir la valeur de l'année à partir de la date de vente. Selon les données insérées du tableau des ventes, il y a deux entrées pour 2020 et deux entrées pour l'année 2021.

Sélectionnez l'année (Sales_Date), somme (montant) comme total
Des ventes
Groupe par année (Sales_Date) avec Rollup;

Sortir:

La sortie suivante apparaîtra après avoir exécuté la requête ci-dessus. Le montant total des ventes pour l'année 2020 est de 563400 + 6700000 ou 7263400. Le montant total des ventes pour l'année 2021 est de 800000 + 900000 ou 1700000. Le total de 7263400 + 1700000 est 8963400.

Conclusion:

De nombreuses requêtes complexes peuvent être facilement implémentées en utilisant l'instruction ROLLUP. Les utilisations de cette déclaration ont été montrées en utilisant plusieurs tables de ce tutoriel pour aider les nouveaux utilisateurs de MySQL.