Funkcje okna: OVER

Licz w poprzek wierszy, bez ich zwijania. OVER określa, które wiersze brać pod uwagę, podobnie jak RANK i sumy narastające w Excelu.

Składnia

ROW_NUMBER() OVER (ORDER BY column)
RANK() OVER (ORDER BY column)
SUM(column) OVER (PARTITION BY column ORDER BY column)
  • PARTITION BY zaczyna obliczenie od nowa dla każdej grupy.
  • W przeciwieństwie do GROUP BY każdy wiersz pozostaje w wyniku.

Przykład

SELECT order_id, RANK() OVER (ORDER BY order_date) AS day_rank FROM orders;

Każde zamówienie z jego rangą według daty. Zamówienia z tego samego dnia mają tę samą rangę.

Użyte tabele: orders. Wypróbuj to w lekcji poniżej.

Typowe błędy

  • ROW_NUMBER nadaje każdemu wierszowi inny numer; RANK nadaje remisującym wierszom ten sam numer i pomija kolejne.
  • Funkcje okna działają po WHERE, więc nie możesz użyć ich wyników w WHERE. Opakuj zapytanie w podzapytanie lub WITH, aby po nich filtrować.

Ćwicz to