Rollup mysql

Rollup mysql
Il database MySQL contiene molte tabelle correlate per archiviare i dati. A volte richiede il riepilogo dei dati utilizzando una o più tabelle. La funzione di rollup mysql viene utilizzata per generare questo tipo di dati che possono contenere il totale o sub-totale di uno o più campi della tabella. Il subtotale dei dati può essere calcolato facilmente utilizzando una semplice dichiarazione di rollup senza usare l'unione nella query. Inoltre, le righe totali e subtotali possono essere aggiunte al contenuto della tabella utilizzando questa istruzione. In questo tutorial sono stati descritti diversi usi del rollup nella query.

Sintassi:

Il rollup viene utilizzato per creare un gruppo di colonne. Quindi qualsiasi funzione aggregata di mysql e gruppo per clausola viene utilizzata nella query selezionata in cui viene utilizzato il rollup. La sintassi del rollup è mostrata di seguito. I nomi dei campi della tabella che verranno utilizzati dopo che la clausola selezionata verrà utilizzata con il gruppo per raggruppamento.

Seleziona Field1, Field2 AggregateFunction (Field3)
Dal tablename
Gruppo di Field1, archiviato2 con rollup;

Usi dell'istruzione Rollup in Select Query:

In questo tutorial sono stati mostrati diversi usi dell'istruzione rollup con il gruppo per clausola nella query selezionata.

Prerequisiti:

È necessario creare una tabella di database con i dati in un database MySQL per verificare l'uso dell'istruzione Rollup con il gruppo per clausola in MySQL. Apri il terminale e connettiti con il server MySQL eseguendo il comando seguente.

$ sudo mysql -u root

Esegui il comando seguente per creare un database denominato test_db.

Crea database test_db;

Esegui il comando seguente per selezionare il database.

Usa test_db;

Esegui la seguente query per creare una tabella denominata Sales_persons con quattro campi.

Crea table Sales_persons (
id int auto_increment chiave primaria,
Nome varchar (30) non null,
Email Varchar (50),
contact_no varchar (30));

Eseguire la seguente query per inserire tre record nel venditore tavolo.

Inserisci in "Sales_persons" ("id", "nome", "email", "contact_no") valori (null, "kamal hasan", "[email protected] ',' 0191275634 '),
(Null, 'Nila Hossain', '[email protected] ',' 01855342357 '),
(NULL, 'Abir Hossain', '[email protected] ',' 01634235698 ');

Esegui la seguente query per creare una tabella denominata saldi con quattro campi che contiene una chiave straniera che crea una relazione da uno a molti con il Sales_persons tavolo a saldi tavolo.

Crea vendite di tabelle (
id int non null Key primario,
Sales_Date Data non null, importo int,
sp_id int,
Vincolo fk_sp straniero chiave (SP_ID)
Riferimenti Sales_persons (ID)
Su Elimina Cascade su Aggiornamento Cascade);

Eseguire la seguente query per inserire quattro record nel saldi tavolo.

Inserisci in "Sales" ("Id", "Sales_date", "importo", "sp_id") valori
(90, '2021-11-09', 800000, 1),
(34, '2020-12-15', 563400, 3),
(67, '2021-12-23', 900000, 1),
(56, '2020-12-31', 6700000, 1);

Esempio-1: crea un rapporto di riepilogo senza utilizzare l'istruzione rollup

Le seguenti query selezionate calcoleranno il rapporto di riepilogo dell'importo totale delle vendite di ciascun venditore e l'importo di vendita complessivo di tutte le vendite utilizzando Union All con due query selezionate. Una query selezionata recupererà il nome del venditore e le vendite totali di quel venditore. Un'altra domanda calcolerà le vendite di tutti i venditori. Eseguire la seguente query dal prompt mysql.

Seleziona nome, somma (importo) come totale
Dalle vendite, Sales_persons
Dove le vendite.sp_id = sales_persons.id
Gruppo di SP_ID
Unione tutto
Seleziona null, somma (vendite.importo) per totale
Dalle vendite;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. C'è un record per il venditore chiamato "Abir Hossain" con il valore ID 3 nel saldi Tabella e l'importo è 563400. Ci sono tre record per il venditore chiamato "Kamal Hasan" con il valore ID, 1 nella tabella delle vendite, e l'importo totale delle vendite è 8400000. La somma di tutto l'importo delle vendite è 563400+8400000 = 8963400.

Produzione:


Verrà visualizzato il seguente output dopo aver eseguito la query sopra. Il campo Nome mostrerà il valore nullo per la riga che contiene l'importo totale.

Esempio 2: uso del rollup con una funzione campo e sum ()

L'output generato nell'esempio precedente può essere generato facilmente utilizzando l'istruzione rollup che è stata mostrata in questo esempio. La query selezionata che è stata utilizzata per contare l'importo totale delle vendite di tutti i venditori nell'esempio precedente non è richiesta nella seguente query a causa dell'utilizzo dell'istruzione rollup. Il campo Nome del saldi La tabella è stata utilizzata con la funzione aggregata nella query selezionata. Il gruppo per clausola contiene il campo Nome con l'istruzione Rollup.

Seleziona nome, somma (importo) come totale
Dalle vendite, Sales_persons
Dove le vendite.sp_id = sales_persons.id
Gruppo per nome con rollup;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. Come l'esempio precedente, il campo Nome mostrerà il valore nullo per la riga che contiene l'importo totale.

Esempio-3: Uso del rollup con la funzione anno () insieme alla funzione Sum ()

In questo esempio l'uso di qualsiasi funzione integrata MySQL con la funzione aggregata per l'uso dell'istruzione rollup. Le seguenti query selezionate mostreranno il rapporto di riepilogo dell'importo delle vendite in base all'anno di vendita. La funzione dell'anno () è stata utilizzata nella query per scoprire il valore dell'anno dalla data di vendita. Secondo i dati inseriti della tabella di vendita, ci sono due voci per il 2020 e due voci per l'anno 2021.

Seleziona l'anno (sales_date), somma (importo) come totale
Dalle vendite
Gruppo per anno (Sales_Date) con rollup;

Produzione:

Verrà visualizzato il seguente output dopo aver eseguito la query sopra. L'importo totale delle vendite per l'anno 2020 è 563400+6700000 o 7263400. L'importo totale delle vendite per l'anno 2021 è 800000+900000 o 1700000. Il totale di 7263400+1700000 è 8963400.

Conclusione:

Molte query complesse possono essere facilmente implementate utilizzando l'istruzione rollup. Gli usi di questa affermazione sono stati mostrati utilizzando più tabelle in questo tutorial per aiutare i nuovi utenti MySQL.