Używanie klauzuli OVER

Ukończone

Wiesz już, że funkcje okien wymagają klauzuli OVER do tworzenia okien i manipulowania nimi. Klauzula OVER definiuje wiersze, do których jest stosowana funkcja okna. Może to być wszystkie wiersze lub podzbiór wierszy. Może również definiować kolejność wierszy dla funkcji okna.

Możesz użyć klauzuli OVER z funkcjami, aby obliczyć zagregowane wartości, takie jak średnie ruchome, skumulowane agregacje, sumy bieżące lub pierwsze N na wyniki grupy.

Klauzula OVER może przyjmować następujące argumenty:

  • PARTITION BY — dzieli zestaw wyników zapytania na różne części.
  • ORDER BY — definiuje logiczną kolejność wierszy zestawu wyników.
  • WIERSZE/ZAKRES — ogranicza wiersze, określając punkty początkowe i końcowe. Wymaga to argumentu ORDER BY, a wartość domyślna to od początku partycji do bieżącego elementu.

Jeśli nie określisz argumentu klauzuli OVER, funkcje okna zostaną zastosowane dla całego zestawu wyników.

Na poniższym diagramie przedstawiono relację między opcjami SELECT, OVER i PARTITION BY:

Diagram przedstawiający sposób dzielenia wierszy zdefiniowanych w klauzuli OVER przez kolejne poddziele PARTITION BY.

PARTYCJONOWANIE WEDŁUG

Klauzula PARTITION BY dzieli zestaw wyników na partycje przed zastosowaniem funkcji okna. Jeśli parametr PARTITION BY nie zostanie określony, funkcja okna zostanie zastosowana do wszystkich wierszy zapytania. Partycje używają jednej z kolumn udostępnionych w klauzuli FROM.

ORDER BY

FUNKCJA ORDER BY definiuje logiczną kolejność wierszy w ramach każdej partycji. Na przykład funkcja RANK wymaga porządkowenia wierszy, aby umożliwić zwrócenie pozycji rangi każdego wiersza. Kolejność domyślna to ASC, ale najlepszym rozwiązaniem jest określenie usługi ASC lub DESC po zamówieniu według wyrażeń. Wartość NULL jest traktowana jako najniższa możliwa wartość.

KLAUZULE WIERSZE lub ZAKRES

Argumenty WIERSZ lub ZAKRES ustawiają granicę początkową i końcową wokół obsługiwanych wierszy. Wiersz lub ZAKRES wymaga podklasy ORDER BY w klauzuli OVER.

Klauzula ROWS ogranicza wiersze w partycji przez określenie stałej liczby wierszy poprzedzających lub po bieżącym wierszu.

Klauzula RANGE logicznie ogranicza wiersze w partycji, określając zakres wartości w odniesieniu do wartości w bieżącym wierszu.

BIEŻĄCY WIERSZ

Określa, że okno rozpoczyna się lub kończy w bieżącym wierszu, gdy jest używane z wierszami lub bieżącą wartością, gdy jest używana z zakresem. BIEŻĄCY WIERSZ można określić jako punkt początkowy i końcowy.

MIĘDZY I

Służy do określania punktów granicy początkowej i końcowej okna za pomocą wierszy lub zakresu.