A Futásösszegek kiszámítása az SQL október 20, 2015 / Andy Granowitz
hány felhasználó csatlakozott az elmúlt 5 hónapban? Mi volt a teljes értékesítés a Q2-ben? Mennyi bevétel származott a márciusi regisztrációs kohorszból?
bár ezekre a kérdésekre egyetlen számmal lehet válaszolni, hasznos lehet egy futó teljes idő: hány egyedi felhasználó csatlakozott, vagy mennyi halmozott bevétel érkezett nap mint nap egy bizonyos időszak alatt.
általában az adatokat fokozatosan tárolják. Például itt van egy napi értékesítési táblázat:
Date | Sales |
---|---|
10/1/2015 | 5 |
10/2/2015 | 3 |
10/3/2015 | 7 |
10/4/2015 | 8 |
10/5/2015 | 2 |
10/6/2015 | 3 |
10/7/2015 | 6 |
How do we generate the following table of cumulative sales over time? In SQL, there are two typical approaches: a self join or a window function.
Date | Running Total of Sales |
---|---|
10/1/2015 | 5 |
10/2/2015 | 8 |
10/3/2015 | 15 |
10/4/2015 | 23 |
10/5/2015 | 25 |
10/6/2015 | 28 |
10/7/2015 | 34 |
A self join is a query that compares a table to itself. Ebben az esetben összehasonlítjuk az egyes dátumokat minden olyan dátummal, amely kisebb vagy egyenlő, hogy kiszámítsuk a futó teljes értéket. Konkrétan a sales
összegét vesszük a második táblázatban minden sorban, amelynek dátuma kisebb vagy egyenlő az első táblázatból származó dátummal. Ez Postgres / Redshift szintaxis, de más SQL nyelvjárások nagyon hasonlóak.
Ez nem egy rossz megközelítés; ez egy szép kirakat, hogyan bővíthető SQL lehet használni csak select
from
join
, és group by
nyilatkozatok.
de ez egy csomó kódot egy egyszerű feladat. Próbáljunk ki egy ablak funkciót. Úgy tervezték, hogy kiszámítsa a metrikát egy sor sor felett. Esetünkben minden olyan sort szeretnénk összefoglalni, ahol a dátum kisebb vagy egyenlő az aktuális sor dátumával.
az ablak funkció szűrheti és rendezheti a sorkészletet a funkció futtatásához. Itt aorder by date rows unbounded preceding
az összegfüggvényt csaksales
– re korlátozza az aktuális sor időpontja előtt. Az ablakfunkciók hihetetlenül hasznosak az időalapú analitikai lekérdezésekhez; ha többet szeretne megtudni, a Postgres docs remek hely a kezdéshez.
a diagram létrehozásának utolsó lépése, amely diadalmasan megosztja csapattársaival, könnyen megvalósítható a Wagon segítségével. Ablak funkciók a győzelem!
A Wagon egy modern SQL szerkesztő az elemzők és mérnökök számára: lekérdezések írása, adatok megjelenítése, diagramok megosztása a csapattal. Regisztráció ingyen: