Informacje o nowych artykułach oraz akcjach edukacyjnych prosto na Twojej skrzynce e-mail!

Grupowanie danych: Klauzula GROUP BY, GROUPING SETS, OVER cz. II

OVER

UWAGA: OVER() działa na bazach Microsoftu.

Funkcje grupujące oraz funkcje rankingu można uruchamiać dla zgrupowanych danych za pomocą GROUP BY, czasami jednak grupując otrzymane wynik, mamy sytuacje kiedy to w grupie znajduje się dokładnie jeden wiersz, a my potrzebuje obliczyć na przykład średnią z jakiś danych. Oczywiste jest to, że nie policzymy średniej z jednej danej, jest to całkowicie bezsensu. Możemy w takim przypadku użyć klauzuli OVER, która pozwala określić dodatkowy porządek grupowania. Co więcej zdefiniowane za pomocą tej funkcji grupy nazywamy partycjami dla których, można bez przeszkód wywołać funkcje grupujące takie jak AVG().

SELECT miasto, AVG(wiek) OVER() FROM klienci WHERE miasto = 'Kraków';

W powyższym zapytaniu obliczyliśmy średni wiek klientów, w danym mieście.

Gdybyśmy nie chcieli zastosować klauzuli OVER() musielibyśmy grupować dane po mieście, oraz wieku co dało by błędny wynik.

Jeżeli w OVER() zostanie umieszczone słowo kluczowe PARTITION BY to funkcja grupująca, bądź funkcja rankingu zostanie wywołana dla każdej zdefiniowanej w ten sposób partycji.

SELECT miasto, 
COUNT(*) OVER (PARTITION BY miasto)
FROM klienci;

Strony: 1 2 3 4

Spodobało się?

Jeśli tak, to zarejestruj się do newslettera aby otrzymywać informacje nowych artykułach oraz akcjach edukacyjnych. Gwarantuję 100% satysfakcji i żadnego spamowania!

, , , , , , ,

Dodaj komentarz

Odpowiedz

Twój adres e-mail nie zostanie opublikowany.

Pin It on Pinterest