Menu
CoddyTech

Funkcje agregujące

Część sekcji Podstawy ścieżki SQL w Coddy. Lekcja 68 z 72.

Za pomocą OVER (ORDER BY ...) funkcje agregujące, takie jak AVG() lub MAX(), są obliczane dla wierszy aż do bieżącego wiersza włącznie, wraz z wierszami, które mają taką samą wartość ORDER BY. Bez ORDER BY wewnątrz OVER są obliczane dla wszystkich wierszy, więc każdy wiersz otrzymuje tę samą wartość.
Na przykład możemy obliczyć maksymalny przychód uzyskany do końca każdego okresu:

miesiącprzychódregion
440East
520East
660West
755West
861East
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1

To zwróci:

miesiącprzychódmax_revenue
44040
52040
66060
75560
86161

W miesiącach 4 i 5 maksymalny przychód wynosi 40, w miesiącach 6 i 7 wynosi 60, a w miesiącu 8 wynosi 61. Dzieje się tak, ponieważ gdy znajduje nowy, większy przychód, odrzuca poprzedni i używa największego dotychczas.

W przypadku funkcji AVG() będzie to wyglądać tak:

SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1
miesiącprzychódavg_revenue
44040
52030
66040
75543.75
86147.2

Możemy również grupować nasze obliczenia według określonych kategorii za pomocą PARTITION BY. Na przykład:

SELECT month, revenue, region,
MAX(revenue) OVER (PARTITION BY region ORDER BY month ASC) as max_revenue
FROM table1

Dałoby nam to:

monthrevenueregionmax_revenue
440East40
520East40
660West60
755West60
861East61

Teraz maksimum jest obliczane osobno dla każdego regionu. Regiony East i West niezależnie utrzymują własne maksima narastająco.

challenge icon

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

  • books: book, page, words

Dla każdej książki wyświetl jej nazwę, łączną liczbę stron, liczbę słów na każdej stronie i oblicz:

  1. Maksymalną liczbę słów na dowolnej stronie tej książki
  2. Średnią liczbę słów na stronę dla całej książki
  3. Różnicę między liczbą słów na bieżącej stronie a średnią liczbą słów na stronę w tej książce

Wyświetl wyniki uporządkowane według książki i numeru strony.

Zwróć następujące kolumny:

  • book
  • page
  • words
  • max_words_in_book
  • avg_words_per_page
  • diff_from_avg

Spróbuj swoich sił

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online SQL