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ąc | przychód | region |
| 4 | 40 | East |
| 5 | 20 | East |
| 6 | 60 | West |
| 7 | 55 | West |
| 8 | 61 | East |
SELECT month, revenue, MAX(revenue) OVER (ORDER BY month ASC) as max_revenue
from table1To zwróci:
| miesiąc | przychód | max_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 40 |
| 6 | 60 | 60 |
| 7 | 55 | 60 |
| 8 | 61 | 61 |
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ąc | przychód | avg_revenue |
| 4 | 40 | 40 |
| 5 | 20 | 30 |
| 6 | 60 | 40 |
| 7 | 55 | 43.75 |
| 8 | 61 | 47.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 table1Dałoby nam to:
| month | revenue | region | max_revenue |
| 4 | 40 | East | 40 |
| 5 | 20 | East | 40 |
| 6 | 60 | West | 60 |
| 7 | 55 | West | 60 |
| 8 | 61 | East | 61 |
Teraz maksimum jest obliczane osobno dla każdego regionu. Regiony East i West niezależnie utrzymują własne maksima narastająco.
Wyzwanie
ŁatwyDostę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:
- Maksymalną liczbę słów na dowolnej stronie tej książki
- Średnią liczbę słów na stronę dla całej książki
- 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:
bookpagewordsmax_words_in_bookavg_words_per_pagediff_from_avg
Spróbuj swoich sił
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Więcej słów kluczowych
Słowo kluczowe INSłowo kluczowe BETWEENSłowo kluczowe LIKESłowo kluczowe ASPowtórzenie – modele telefonów komórkowych2Instrukcje warunkowe
Podstawy instrukcji warunkowychSłowo kluczowe ANDSłowo kluczowe ORSłowo kluczowe NOTŁączenie wielu warunkówNawiasyWartości logiczne3Określony format zwracanych danych
Wartości nullSortowanie wyników — część 1Sortowanie wyników — część 2Powtórzenie — firma zajmująca się cyberbezpieczeństwemOgraniczanie liczby rekordówPowtórzenie — fabryka pojazdów6Wyzwania na początek
Powtórka – wybory parlamentarnePowtórka – zatrzymanie przestępcy przez policjęPowtórka – pojemnik na napój w barzePowtórka – inżynier: nowe kolumny9Wiele tabel
Podstawowe JOIN — część 1Podstawowe JOIN — część 2Powtórka — JOINSamozłączeniePowtórka — samozłączenieUNIONUprość zapytania — słowo kluczowe WITHPowtórka — zapytania WITHPowtórka — wykonawca z branży nieruchomości12Funkcje okna część 2
Funkcje RANK i DENSE_RANKPowtórzenie – RANK i DENSE_RANKFunkcja NTILEFunkcje agregująceKryterium ROWS i RANGEPoćwicz samodzielnie: Edytor online SQL