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ć.