1) Group By:
Dzięki grupowaniu jesteśmy w stanie ograniczyć dane do takich, które posiadają wspólny mianownik.
Po ograniczeniu zakresu danych możemy skorzystać z funkcji agregujących.
Wybierzemy tych Mangerów, którzy mają ID różne od null:
SELECT location_id FROM departments WHERE manager_id is not null;
Wyświetlimy numery lokalizacji oraz ilość departamentów, które posiadają przydzielonego managera:
SELECT location_id, count(*) from departments where manager_id is not null GROUP BY location_id;
Na koniec pokażemy te lokalizacje, które mają więcej niż jedną lokalizację, tutaj możemy wykorzystać słowo kluczowe HAVING, zamiast WHERE, które jest niedostępne podczas grupowania:
SELECT location_id, count(*) from departments where manager_id is not null GROUP BY location_id HAVING count(*)>1;
2) Rollup:
Polecenie ROLLUP grupuje dane według wskazanych kolumn w sposób hierarchiczny. Użycie ROLLUP(a, b, c) spowoduje wygenerowanie następujących grupowań: (a, b, c), (a, b), (a) oraz rekordu agregującego cały zbiór. Inaczej mówiąc, użycie w zapytaniu konstrukcji ROLLUP(a, b, c) jest równoważne z wykonaniem czterech zapytań połączonych klauzulą UNION ALL, gdzie każde zapytanie posiada odpowiednią klauzulę GROUP BY. Poniższy przykład pokazuje działanie polecenia ROLLUP:
SELECT department_id, manager_id, sum(salary) from employees group by rollup(department_id, manager_id) order by department_id, manager_id;
Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.
Link do formularza tutaj: https://beitadmin.pl/pomysly
Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).