W poprzednim wpisie pokazałem w jaki sposób działa Group by, dziś pokaże w jaki sposób odfiltrować pogrupowane dane za pomocą Group by? W tym celu poznasz klauzulę Having, którą można porównać do where z której korzystamy przy korzystaniu z from, z tą różnicą, że klauzula where ma zastosowanie do pojedynczego wiersza.
PostgreSQL Having Nieco Teorii…
Zacznijmy od początku, czyli jak zwykle od schematu. Klauzula Having występuje zawsze po klauzuli Group by.
1 2 3 4 5 6 7 8 9 |
SELECT kolumna_1, funkcja_agregująca (kolumna_2) FROM tabela GROUP BY kolumna_1 HAVING warunek; |
Przykłady, Przykłady…
Załóżmy, że potrzebujesz wybrać w tabeli payment klientów, którzy zakupili od nas towar za więcej 100zł. Oczywiście należy na początek zsumować zakupy dla klienta, następnie pogrupować po ID klienta oraz wybrać tylko tych, którzy zakupili towar powyżej 100zł.
1 2 3 4 5 6 7 8 9 10 |
SELECT customer_id, SUM ( amount ) FROM payment GROUP BY customer_id HAVING SUM ( amount ) > 100 ORDER BY customer_id; |
W wyniku zapytania otrzymasz posortowanych klientów, którzy zamówili towar powyżej 100zł.
Zapraszam na kolejny wpis, w którym przedstawię operator UNION ALL.
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:).