ROLUP MYSQL

ROLUP MYSQL
Baza danych MySQL zawiera wiele powiązanych tabel do przechowywania danych. Czasami wymaga uzyskania podsumowania danych za pomocą jednej lub więcej tabel. Do generowania tego typu danych, które mogą zawierać całkowitą lub podtotalową funkcję MySQL Rollp. Subtotal danych można łatwo obliczyć za pomocą prostej instrukcji zwijania bez użycia Unii w zapytaniu. Dodatkowo do zawartości tabeli można dodać całkowitą i subtotalne wiersze za pomocą tego stwierdzenia. W tym samouczku opisano różne zastosowania zwijania w zapytaniu.

Składnia:

ROLUP służy do tworzenia grupy kolumn. Tak więc każda agregowana funkcja MySQL i grupy według klauzuli jest używana w zapytaniu, w którym używany jest zwijanie. Składnia zwijania pokazano poniżej. Nazwy pola tabeli, które będą używane po klauzuli wybranej z grupy według klauzuli do grupowania.

Wybierz Field1, Field2 AggregateFunkction (Field3)
Z TableName
Grupa według Field1, złożony2 z ROLLUP;

Zastosowania instrukcji ROLUP w Wybierz zapytanie:

W tym samouczku pokazano różne zastosowania instrukcji ROLUP z grupą według klauzuli w zapytaniu.

Wymagania wstępne:

Musisz utworzyć tabelę bazy danych z danymi w bazie danych MySQL, aby sprawdzić użycie instrukcji ROLUP z grupą według klauzuli w MySQL. Otwórz terminal i połącz się z serwerem MySQL, wykonując następujące polecenie.

$ sudo mysql -u root

Uruchom następujące polecenie, aby utworzyć nazwaną bazę danych test_db.

Utwórz bazę danych test_db;

Uruchom następujące polecenie, aby wybrać bazę danych.

Użyj test_db;

Uruchom następujące zapytanie, aby utworzyć tabelę o nazwie Sales_persons z czterema polami.

Utwórz tabelę Sales_persons (
ID Int Auto_increment Key podstawowy,
Nazwa varchar (30) nie null,
e -mail varchar (50),
contact_no varchar (30));

Uruchom następujące zapytanie, aby wstawić trzy rekordy do sprzedawca tabela.

Wstaw do „Sales_persons” („ID”, „Nazwa”, „e -mail”, „contact_no”) wartości (null, „Kamal Hasan”, „[email protected] ', „0191275634”),
(Null, „Nila Hossain”, „[email protected] ', „0185342357”),
(Null, „Abir Hossain”, „[email protected] ', „01634235698”);

Uruchom następujące zapytanie, aby utworzyć tabelę o nazwie obroty z czterema dziedzinami zawierającymi klucz obce, który tworzy relacje jeden do wielu Sales_persons stół do obroty tabela.

Utwórz sprzedaż tabeli (
Id int not zerowy klucz podstawowy,
Sales_Date Data nie null, kwota int,
sp_id int,
Ograniczenie FK_SP Klucz obcy (SP_ID)
Referencje Sales_persons (id)
Na Usuń Cascade na aktualizacji Cascade);

Uruchom następujące zapytanie, aby wstawić cztery rekordy do obroty tabela.

Wstaw do „sprzedaży” („id”, „sales_date”, „kwota”, „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);

Przykład-1: Utwórz raport podsumowujący bez użycia instrukcji ROLLUP

Poniższe zapytanie wyboru obliczy raport podsumowujący całkowitą kwotę sprzedaży każdego sprzedawcy i całkowitą kwotę sprzedaży całej sprzedaży za pomocą Union All z dwoma wybranymi zapytaniami. Jedno wybrane zapytanie odzyska nazwisko sprzedawcy i całkowitą sprzedaż tego sprzedawcy. Kolejne zapytanie obliczy sprzedaż wszystkich sprzedawców. Wykonaj następujące zapytanie z monitu MySQL.

Wybierz nazwę, suma (kwota) jako całkowita
Ze sprzedaży, Sales_persons
Gdzie sprzedaż.sp_id = sales_persons.ID
Grupa przez SP_ID
Związek All
Wybierz Null, suma (sprzedaż.kwota) jako całkowita
Ze sprzedaży;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Jest jeden rekord dla sprzedawcy o imieniu „Abir Hossain” z wartością identyfikatora 3 w obroty Tabela, a kwota wynosi 563400. Istnieją trzy rekordy dla sprzedawcy o nazwie „Kamal Hasan” z wartością identyfikacyjną, 1 w tabeli sprzedaży, a całkowita kwota sprzedaży wynosi 8400000. Suma całej kwoty sprzedaży wynosi 563400+8400000 = 8963400.

Wyjście:


Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Pole nazwy pokaże wartość zerową dla wiersza zawierającego całkowitą kwotę.

Przykład-2: Użycie Rollup z funkcją pola i sum ()

Wyjście wygenerowane w poprzednim przykładzie można łatwo wygenerować za pomocą instrukcji ROLUP, która została pokazana w tym przykładzie. Wybierz zapytanie, które zostało użyte do zliczenia całkowitej kwoty sprzedaży wszystkich sprzedawców w poprzednim przykładzie, nie jest wymagane w następującym zapytaniu z powodu użycia instrukcji ROLLUP. Pole nazwy obroty Tabela została użyta z funkcją agregatów w zapytaniu. Grupa według klauzuli zawiera pole nazwy z instrukcją ROLLUP.

Wybierz nazwę, suma (kwota) jako całkowita
Ze sprzedaży, Sales_persons
Gdzie sprzedaż.sp_id = sales_persons.ID
Grupa według nazwy z Rollup;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Podobnie jak poprzedni przykład, pole nazwy pokaże wartość zerową dla wiersza zawierającego całkowitą kwotę.

Przykład-3: Użycie funkcji ROLUP z funkcją roku () wraz z funkcją sum ()

W tym przykładzie pokazano użycie dowolnej wbudowanej funkcji MySQL z funkcją agregowanej do używania instrukcji ROLUP. Poniższe zapytanie wybierz raport podsumowujący kwotę sprzedaży na podstawie roku sprzedaży. Funkcja roku () została wykorzystana w zapytaniu, aby znaleźć wartość roku z daty sprzedaży. Zgodnie z wstawionymi danymi z tabeli sprzedaży, istnieją dwa wpisy dla 2020 r. I dwa wpisy za rok 2021.

Wybierz rok (sales_date), suma (kwota) jako ogółem
Ze sprzedaży
Grupa według roku (sales_date) z rolpem;

Wyjście:

Następujące dane wyjściowe pojawią się po wykonaniu powyższego zapytania. Całkowita kwota sprzedaży za rok 2020 wynosi 563400+6700000 lub 7263400. Całkowita kwota sprzedaży za rok 2021 wynosi 800000+900000 lub 1700000. W sumie 7263400+1700000 to 8963400.

Wniosek:

Wiele złożonych zapytań można łatwo zaimplementować za pomocą instrukcji ROLUP. Zastosowania tego oświadczenia zostały pokazane przy użyciu wielu tabel w tym samouczku do pomocy nowym użytkownikom MySQL.