SQL Academy · Oppitunti

Lag/Lead kehysikkunoilla

Yhdistä LAG/LEAD kehysikkunoihin jaksojen muutosten laskemiseksi ja aikasarjojen aukkojen tunnistamiseksi.

Oppitunti 2/413 vaihetta

Lag/Lead kehysikkunoilla on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.

LAG/LEAD-kertaus

LAG(col, n) palauttaa ikkunassa nykyistä riviä n riviä aiemman arvon. LEAD(col, n) tarkastelee tulevia rivejä.

SELECT day, revenue,
       LAG(revenue) OVER (ORDER BY day) AS prev_day_revenue
FROM daily_revenue;

LAG oletusarvon kanssa

Kolmas argumentti on oletusarvo tilanteessa, jossa naapuririviä ei ole:

LAG(revenue, 1, 0) OVER (ORDER BY day)
-- Returns 0 instead of NULL for the very first row.

Erotusten laskeminen

Päiväkohtainen muutos:

SELECT day, revenue,
       revenue - LAG(revenue, 1, 0) OVER (ORDER BY day) AS delta
FROM daily_revenue;

Monivaiheinen LAG

Vertaa arvoon N päivää sitten — hyödyllinen viikko- ja vuositasoisissa vertailuissa:

LAG(revenue, 7) OVER (ORDER BY day)   -- 7 days ago
LAG(revenue, 365) OVER (ORDER BY day) -- 1 year ago

LEAD ennustepaikkoja varten

”Mikä tapahtuma tulee seuraavaksi?” -tyyppiset ratkaisut:

SELECT id, ts,
       LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) AS next_ts,
       LEAD(ts) OVER (PARTITION BY user_id ORDER BY ts) - ts AS gap_to_next
FROM events;

Käyttäjäkohtaiset mallit

LAG ja LEAD ottavat PARTITION BY -jaon huomioon:

SELECT user_id, ts, action,
       LAG(action) OVER (PARTITION BY user_id ORDER BY ts) AS prev_action
FROM events;
-- prev_action is the user's previous event, not globally.

Tilamuutosten tunnistaminen

Yhdistä LAG ja CASE:

SELECT id, status,
  CASE WHEN status <> LAG(status) OVER (ORDER BY ts) THEN 'changed' ELSE 'same' END
FROM orders;

FIRST_VALUE / LAST_VALUE

Kehyksen ensimmäinen tai viimeinen arvo:

FIRST_VALUE(status) OVER (PARTITION BY order_id ORDER BY ts) AS first_status
-- The status when the order was first seen.

LAST_VALUE(status) OVER (
  PARTITION BY order_id ORDER BY ts
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
) AS final_status

NTH_VALUE

Järjestetyn ikkunan N:s arvo:

NTH_VALUE(revenue, 3) OVER (
  ORDER BY revenue DESC
  ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
)
-- Third-highest revenue value.

Ryhmäkohtaisten kehysten funktiot

Yhdistä LAG ja PARTITION BY ryhmiteltyjä naapuririvejä varten:

SELECT user_id, ts, page,
       LAG(page) OVER (PARTITION BY user_id ORDER BY ts) AS prev_page,
       LEAD(page) OVER (PARTITION BY user_id ORDER BY ts) AS next_page
FROM page_views;

Suorituskyky

Ikkunafunktiot lajittelevat kunkin osion kerran. Indeksoi (PARTITION BY, ORDER BY) -sarakkeet, kun osiot ovat suuria.

Kertaus

LAG ja LEAD tekevät rivien välisestä vertailusta edullista.

  • Oletusarvo välttää NULL-arvon
  • Yhdistä CASE- lausekkeeseen tilamuutosten tunnistamista varten
  • FIRST_VALUE/LAST_VALUE/NTH_VALUE täydentävät funktioperhettä

Pikatarkistus

Haluatte lisätä jokaiselle riville käyttäjän seuraavaan tapahtumaan kuluvan ajan sekunteina. Mitä funktiota käytätte?

Aloita maksutta

Opi SQL tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
46
Oppitunnit
183

Usein kysytyt kysymykset

Onko oppitunti ”Lag/Lead kehysikkunoilla” ilmainen?

Kyllä – oppitunnin ”Lag/Lead kehysikkunoilla” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Lag/Lead kehysikkunoilla”?

Yhdistä LAG/LEAD kehysikkunoihin jaksojen muutosten laskemiseksi ja aikasarjojen aukkojen tunnistamiseksi. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Lag/Lead kehysikkunoilla”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?

Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Kehyslausekkeet: ROWS ja RANGE
  2. Lag/Lead kehysikkunoilla
  3. Ryhmittely NTILE- ja Cume_Dist-funktioilla
  4. Käytännön raportointimallit
← Takaisin: SQL Academy