Funkcje agregujące
Lekcja 11 z 13 w kursie SQL dla zaawansowanych w Coddy.
Funkcje agregujące służą do obliczania wartości funkcji AVG(), MAX() lub dowolnej innej funkcji agregującej aż do bieżącego wiersza.
Na przykład możemy obliczyć maksymalny przychód uzyskany do każdego końcowego okresu:
| month | revenue |
| 4 | 40 |
| 5 | 20 |
| 6 | 60 |
| 7 | 55 |
| 8 | 61 |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1Zwróci to:
| month | revenue | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
Dla miesięcy 4 i 5 maksymalny przychód wynosi 40, dla miesięcy 5 i 6 przychód wynosi 60, a dla miesiąca 8 wynosi 61. Dzieje się tak, ponieważ gdy funkcja znajdzie nowy, większy przychód, odrzuca poprzedni i używa największej dotychczas wartości.
Dla funkcji AVG() będzie to wyglądać tak:
SELECT month, revenue, AVG(revenue) OVER (ORDER BY month ASC) as avg_revenue
from table1| month | revenue | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.2 |
Wyzwanie
ŁatwyKsiążki mają wiele stron, a na każdej stronie jest dużo słów.
W tym wyzwaniu obliczymy wiele różnych miar dotyczących tych książek.
Pobierz dla każdej książki łączną liczbę słów, maksymalną i minimalną liczbę słów oraz średnią liczbę słów do każdej strony; nazwij te kolumny odpowiednio: total_words, max_words, min_words, avg_words. Dodatkowo utwórz ranking stron ( dla każdej książki ) bez luk, obliczając dla każdej książki w kolejności rosnącej stosunek: (avg_words-min_words)/(total_words-min_words); nazwij tę kolumnę ratio_rank. Na koniec uporządkuj wynik rosnąco według book i ratio_rank.
Spróbuj swoich sił
Wszystkie lekcje w sekcji SQL dla zaawansowanych
Poćwicz samodzielnie: Kompilator Python online