Czasami chcemy pogrupować wiersze tabeli i uzyskać
jakieś informacje o nich. Na przykład możemy chcieć uzyskać średnie wynagrodzenie
pracowników w poszczególnych krajach.
Grupowanie wierszy
za pomocą klauzuli GROUP BY
Klauzula GROUP BY grupuje wiersze w bloki ze wspólną
wartością jakiejś kolumny. Na przykład poniższe zapytanie grupuje wiersze
tabeli employee w bloki z tą samą
wartością job_country:
Należy zauważyć, że w wynikach znajduje się tylko
jeden wiersz dla każdego bloku wierszy z tą samą wartością job_country.
Używanie wielu
kolumn w grupie
W klauzuli GROUP
BY można określić kilka kolumn. Na przykład poniższe zapytanie zawiera w
klauzuli GROUP BY kolumny job_grade
i job_country z tabeli employee:
Używanie funkcji agregujących
z grupami wierszy
Do funkcji agregującej można przesłać bloki wierszy.
Wykona ona obliczenia na grupie wierszy z każdego bloku i zwróci jedną wartość
dla każdego bloku. Na przykład aby uzyskać liczbę wierszy z tą samą wartością job_country w tabeli employee, musimy:
- pogrupować wiersze w bloki z tą samą wartością job_country za pomocą GROUP BY
- zliczyć wiersze w każdej grupie za pomocą funkcji COUNT(job_country)
Demonstruje to poniższe zapytanie:
W zestawie wyników widzimy, że w jednym wierszu job_country ma wartość Canada, trzy wiersze mają wartość job_country równą England itd.
Przejdźmy do przykładu z początku lekcji. Aby uzyskać średnie
wynagrodzenie pracowników w poszczególnych krajach musimy:
- za pomocą klauzuli GROUP BY pogrupować wiersze z tabeli employee w bloki z tą samą wartością job_country
- za pomocą funkcji AVG(salary) obliczyć średnie wynagrodzenie w każdym bloku wierszy
Demonstruje to poniższe zapytanie:
Z klauzulą GROUP
BY możemy używać dowolnych funkcji agregujących. Na przykład poniższe
zapytanie pobiera sumę wynagrodzeń pracowników z poszczególnych krajów:
Warto zaznaczyć, że nie musimy umieszczać kolumn
wykorzystywanych w klauzuli GROUP BY bezpośrednio
w instrukcji SELECT. Ponadto wywołanie funkcji agregującej można również umieścić
w klauzuli ORDER BY.
Oba przypadki pokazuje poniższe zapytanie:
Oba przypadki pokazuje poniższe zapytanie:
Brak komentarzy:
Prześlij komentarz