SQL PARTITION BY (Polski)

Podsumowanie: w tym samouczku nauczysz się, jak używać SQL PARTITION BY, aby zmienić sposób obliczania wyniku przez funkcję okna.

Omówienie klauzuli SQL PARTITION BY

Klauzula PARTITION BY jest podrzędną klauzulą klauzula OVER. Klauzula PARTITION BY dzieli zestaw wyników zapytania na partycje. Funkcja okna jest obsługiwana osobno na każdej partycji i przelicza dla każdej partycji.

Poniżej przedstawiono składnię klauzuli PARTITION BY:

Możesz określić jedną lub więcej kolumn lub wyrażeń, aby podzielić zestaw wyników. Element expression1, expression1 itp. Może odnosić się tylko do kolumn pochodzących z elementu FROM klauzula. Nie mogą odwoływać się do wyrażeń ani aliasów na liście wyboru.

Wyrażenia klauzuli PARTITION BY mogą być wyrażeniami kolumnowymi, podzapytaniem skalarnym lub funkcją skalarną. Zwróć uwagę, że podzapytanie skalarne i funkcja skalarna zawsze zwracają jedną wartość.

Jeśli pominiesz klauzulę PARTITION BY, cały zestaw wyników jest traktowany jako pojedyncza partycja.

PARTITION BY a GROUP BY

Klauzula GROUP BY jest często używana w połączeniu z funkcją agregującą, taką jak SUM() i AVG(). Klauzula GROUP BY zmniejsza liczbę zwracanych wierszy, zwijając je i obliczając sumy lub średnie dla każdej grupy.

Na przykład poniższa instrukcja zwraca średnią wynagrodzenie pracowników według działów:

Poniższy rysunek przedstawia wynik:

Klauzula PARTITION BY dzieli wynik na partycje i zmienia sposób obliczania funkcji okna. Klauzula PARTITION BY nie zmniejsza liczby zwracanych wierszy.

Poniższa instrukcja zwraca pensję pracownika, a także średnie wynagrodzenie działu pracownika:

Oto częściowe dane wyjściowe:

W prostych słowach, klauzula GROUP BY to agregacja, podczas gdy klauzula PARTITION BY jest analityczna.

W tym zapoznałeś się z klauzulą SQL PARTITION BY, która zmienia sposób obliczania wyniku funkcji okna.

  • Czy ten samouczek był pomocny?
  • TakNie

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *