MySQL Rollup

MySQL Rollup
MySQL -databasen inneholder mange relaterte tabeller for å lagre data. Noen ganger krever det å få datasammendraget ved å bruke en eller flere tabeller. MySQL Rollup-funksjonen brukes til å generere denne typen data som kan inneholde totalen eller sub-total av ett eller flere felt i tabellen. Undertotal av dataene kan enkelt beregnes ved å bruke en enkel rollup -setning uten å bruke union i spørringen. I tillegg kan totale og subtotale rader legges til innholdet i tabellen ved å bruke denne uttalelsen. Ulike bruksområder for opprulling i spørringen er beskrevet i denne opplæringen.

Syntaks:

Rollup brukes til å lage en gruppe kolonner. Så enhver samlet funksjon av MySQL og Group BY -klausul brukes i SELECT -spørringen der opprullingen brukes. Syntaksen til opprullingen vises nedenfor. Feltnavnene på tabellen som skal brukes etter valgklausulen vil bli brukt med gruppen etter klausul for gruppering.

Velg Field1, Field2 AggregateFunction (Field3)
Fra tablename
Gruppe av Field1, arkivert2 med Rollup;

Bruk av rollup -setning i SELECT -spørring:

Ulike bruksområder for rollup -setningen med gruppen BY -klausulen i SELECT -spørringen er vist i denne opplæringen.

Forutsetninger:

Du må opprette en databasetabell med data i en MySQL -database for å sjekke bruken av rollup -setningen med gruppen etter klausul i MySQL. Åpne terminalen og koble til MySQL -serveren ved å utføre følgende kommando.

$ sudo mysql -u root

Kjør følgende kommando for å opprette en database som heter test_db.

Opprette databasetest_db;

Kjør følgende kommando for å velge databasen.

Bruk test_db;

Kjør følgende spørsmål for å opprette en tabell som heter Sales_persons med fire felt.

Lag tabell Sales_persons (
id int auto_increment primærnøkkel,
Navn varchar (30) ikke null,
E -post varchar (50),
Kontakt_no varchar (30));

Kjør følgende spørsmål for å sette inn tre poster i selger bord.

Sett inn 'Sales_persons' ('id', 'Navn', 'E -post', 'Contact_no') verdier (null, 'Kamal Hasan', '[email protected] ',' 0191275634 '),
(Null, 'Nila Hossain', '[email protected] ',' 01855342357 '),
(Null, 'Abir Hossain', '[email protected] ',' 01634235698 ');

Kjør følgende spørsmål for å opprette en tabell som heter Salg med fire felt som inneholder en fremmed nøkkel som skaper et en-til-mange forhold til Sales_persons bord til Salg bord.

Lag bordsalg (
id int ikke null primærnøkkel,
Sales_date dato ikke null, beløp int,
sp_id int,
Begrensning FK_SP Foreign Key (SP_ID)
Referanser Sales_persons (ID)
På slett kaskade på oppdatering kaskade);

Kjør følgende spørsmål for å sette inn fire poster i Salg bord.

Sett inn 'Sales' ('ID', 'Sales_date', 'Beløp', 'SP_ID') verdier
(90, '2021-11-09', 800000, 1),
(34, '2020-12-15', 563400, 3),
(67, '2021-12-23', 900000, 1),
(56, '2020-12-31', 6700000, 1);

Eksempel-1: Opprett sammendragsrapport uten å bruke rollup-setning

Følgende valgte spørsmål vil beregne sammendragsrapporten om det totale salgsbeløpet til hver selger og det samlede salgsbeløpet for alt salg ved å bruke Union alle med to utvalgte spørsmål. Én valgt spørring vil hente selgerens navn og totalt salg av den selgeren. En annen spørring vil beregne salget av alle selgere. Utfør følgende spørsmål fra MySQL -ledeteksten.

Velg navn, sum (beløp) som total
Fra salg, Sales_persons
Hvor salg.sp_id = Sales_persons.id
Gruppe av sp_id
Union alle
Velg NULL, Sum (salg.beløp) som total
Fra salg;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Det er en post for selgeren som heter 'Abir Hossain' med ID -verdien 3 i Salg bord, og beløpet er 563400. Det er tre poster for selgeren som heter 'Kamal Hasan' med ID -verdien, 1 i salgstabellen, og det totale salgsbeløpet er 8400000. Summen av alt salgsbeløp er 563400+8400000 = 8963400.

Produksjon:


Følgende utdata vises etter utførelsen av spørringen ovenfor. Navnfeltet vil vise nullverdien for raden som inneholder det totale beløpet.

Eksempel-2: Bruk av opprulling med en felt- og sum () -funksjon

Utgangen som genereres i det forrige eksemplet kan enkelt genereres ved å bruke rollup -setningen som er vist i dette eksemplet. SELECT -spørringen som har blitt brukt til å telle det totale salgsbeløpet for alle selgere i forrige eksempel, er ikke nødvendig i følgende spørring på grunn av å bruke rollup -setningen. Navnfeltet til Salg Tabellen har blitt brukt med den samlede funksjonen i SELECT -spørringen. Gruppen BY -klausulen inneholder navnefeltet med rollup -setningen.

Velg navn, sum (beløp) som total
Fra salg, Sales_persons
Hvor salg.sp_id = Sales_persons.id
Gruppe etter navn med rollup;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Som det forrige eksemplet, vil navnefeltet vise nullverdien for raden som inneholder det totale beløpet.

Eksempel-3: Bruk av rollup med år () -funksjon ved siden av summen () -funksjonen

Bruken av en hvilken som helst MySQL-innebygd funksjon med den samlede funksjonen for bruk. Følgende valgte spørsmål viser sammendragsrapporten om salgsbeløpet basert på salgsåret. Året () -funksjonen har blitt brukt i spørringen for å finne ut årets verdi fra salgsdatoen. I følge de innsatte dataene fra salgstabellen er det to oppføringer for 2020 og to oppføringer for året 2021.

Velg år (Sales_Date), Sum (beløp) som total
Fra salg
Gruppe etter år (Sales_date) med Rollup;

Produksjon:

Følgende utdata vises etter utførelsen av spørringen ovenfor. Det totale salgsbeløpet for året 2020 er 563400+6700000 eller 7263400. Det totale salgsbeløpet for året 2021 er 800000+900000 eller 1700000. Totalt 7263400+1700000 er 8963400.

Konklusjon:

Mange komplekse spørsmål kan enkelt implementeres ved å bruke rollup -setningen. Bruken av denne uttalelsen er vist ved å bruke flere tabeller i denne opplæringen for å hjelpe de nye MySQL -brukerne.