0Pricing
SQL Academy · Lekcja

Sumy narastające i średnie kroczące

Obliczaj sumy narastające i średnie kroczące za pomocą SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...).

Sumy narastające i średnie kroczące to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.

Podstawy sumy narastającej

Suma narastająca to SUM z ORDER BY w oknie — bez klauzuli ramki, więc domyślna ramka obejmuje „wiersze od początku do bieżącego wiersza”:

SELECT day, revenue,
       SUM(revenue) OVER (ORDER BY day) AS running_total
FROM daily_revenue
ORDER BY day;

Suma narastająca w grupach

Należy resetować sumę narastającą dla każdego użytkownika:

SELECT id, user_id, total,
       SUM(total) OVER (
         PARTITION BY user_id ORDER BY created_at
       ) AS user_running_total
FROM orders;

Średnia krocząca

Średnia krocząca z N dni korzysta z ramki ROWS:

SELECT day, revenue,
       AVG(revenue) OVER (
         ORDER BY day
         ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
       ) AS avg_7d
FROM daily_revenue;

Wyśrodkowana średnia krocząca

Wyśrodkowane okno 7-dniowe (3 dni przed bieżącym, bieżący dzień, 3 dni po nim):

SELECT day, revenue,
       AVG(revenue) OVER (
         ORDER BY day
         ROWS BETWEEN 3 PRECEDING AND 3 FOLLOWING
       ) AS avg_7d_centred
FROM daily_revenue;

Rozkład skumulowany

Jaki ułamek całkowitych przychodów został osiągnięty do każdego dnia?

SELECT day, revenue,
       SUM(revenue) OVER (ORDER BY day)
         / SUM(revenue) OVER ()  AS cum_share
FROM daily_revenue;

ROWS a RANGE

  • ROWS — zlicza wiersze fizycznie (N wierszy przed/po)
  • RANGE — obejmuje wartości logicznie (np. 7 dni na podstawie wartości daty)
-- ROWS: 6 previous rows + this one (may skip dates with no data)
AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 6 PRECEDING AND CURRENT ROW)

-- RANGE: include any row with a day within '6 days' of the current row
AVG(revenue) OVER (ORDER BY day RANGE BETWEEN INTERVAL '6 days' PRECEDING AND CURRENT ROW)

Maksimum skumulowane

Najlepszy wynik osiągnięty do danego momentu:

SELECT day, total_users,
       MAX(total_users) OVER (ORDER BY day) AS peak_so_far
FROM daily_metrics;

Licznik skumulowany

Łączna liczba zdarzeń zaobserwowanych do tego wiersza:

SELECT id, ts,
       COUNT(*) OVER (ORDER BY ts) AS events_so_far
FROM events;

Wykrywanie anomalii

Porównaj dzisiejsze przychody z kroczącą wartością bazową:

SELECT day, revenue, avg_7d,
  CASE WHEN revenue < 0.5 * avg_7d THEN 'WARNING' ELSE 'OK' END AS status
FROM (
  SELECT day, revenue,
         AVG(revenue) OVER (ORDER BY day ROWS BETWEEN 7 PRECEDING AND 1 PRECEDING) AS avg_7d
  FROM daily_revenue
) sub;

Początkowe wartości NULL

W oknie 7-wierszowym pierwsze 6 wierszy ma wartości NULL lub średnie częściowe. Należy zdecydować, czy je ukryć, czy uznać częściowe okna za prawidłowe.

Wydajność

Agregaty narastające wymagają danych wejściowych uporządkowanych według partycji. Indeks na kolumnie ORDER BY eliminuje sortowanie.

Podsumowanie

Ramki umożliwiają obliczenia narastające.

  • Domyślna ramka z ORDER BY = „od początku do bieżącego wiersza”
  • ROWS BETWEEN n PRECEDING AND CURRENT ROW = okno kroczące
  • SUM/AVG/MAX w oknach = wartości skumulowane lub kroczące

Szybkie sprawdzenie

Jaka klauzula ramki zapewnia 7-dniową średnią kroczącą do bieżącego wiersza?

Często zadawane pytania

Czy lekcja „Sumy narastające i średnie kroczące” jest bezpłatna?

Tak — pełny tekst „Sumy narastające i średnie kroczące” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Sumy narastające i średnie kroczące”?

Obliczaj sumy narastające i średnie kroczące za pomocą SUM(...) OVER (ORDER BY ... ROWS BETWEEN ...). Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć SQL Academy?

Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Sumy narastające i średnie kroczące”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?

Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. OVER, PARTITION BY, ORDER BY
  2. ROW_NUMBER, RANK, DENSE_RANK
  3. LAG, LEAD i wzorce szeregów czasowych
  4. Sumy narastające i średnie kroczące
← Powrót do SQL Academy