Menu
Coddy logo textTech

Kryterium ROWS i RANGE

Lekcja 12 z 13 w kursie SQL dla zaawansowanych w Coddy.

Obecnie nie możemy elastycznie wybierać, ile wierszy przed bieżącym wierszem lub po nim uwzględnić. Teraz jest to możliwe dzięki kryteriom ROWS i RANGE. Aby ich użyć, zapisujemy:

OVER (ROWS BETWEEN --START-- AND --END--)

OVER (RANGE BETWEEN --START-- AND --END--)

Możemy określić następujące opcje:

  • CURRENT ROW - bieżący wiersz
  • n PRECEDING - wiersze przed bieżącym wierszem
  • n FOLLOWING - wiersze po bieżącym wierszu 

Różnica między ROWS i RANGE polega na tym, że kryterium ROWS nie uwzględnia wartości, a jedynie pozycje, natomiast RANGE określa okno na podstawie zakresów wartości, a nie pozycji wierszy.

W przypadku RANGE musimy określić ORDER BY --column_name--, ponieważ w przeciwnym razie nie będzie wiadomo, jak wybrać okno.

Na przykład:

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING

W tym przypadku tworzy okno obejmujące bieżący wiersz, wiersz przed nim i wiersz po nim.

 

RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ORDER BY levels

W tym przypadku tworzy okno obejmujące dla każdego poziomu (posortowanego rosnąco) bieżący poziom, jeden poziom przed nim i jeden poziom po nim. Jeśli bieżący poziom to 5, uwzględnione zostaną poziomy 4, 5 i 6.

Uwaga: Użycie RANGE BETWEEN może spowodować uwzględnienie większej liczby wierszy w oknie, ponieważ obejmuje wszystkie wiersze, których wartości mieszczą się w tym samym zakresie, natomiast ROWS BETWEEN zawsze uwzględnia tę samą liczbę wierszy (o ile są dostępne w zbiorze danych). 

Ponadto RANGE nie obsługuje kolumn z datami.

challenge icon

Wyzwanie

Łatwy

W tym wyzwaniu mamy dane o produkcji gazet. Chcemy poznać średnią liczbę gazet wydrukowanych w ciągu dwóch dni przed bieżącym wierszem i jednego dnia po nim. Chcemy również poznać różnicę między maksymalną a minimalną liczbą gazet wydrukowanych od bieżącej daty i w ciągu trzech poprzedzających ją dni. Nazwij te kolumny odpowiednio avg_newspapers i diff_newspapers.

Spróbuj swoich sił

Wszystkie lekcje w sekcji SQL dla zaawansowanych

Poćwicz samodzielnie: Kompilator Python online