Mit tudunk csinálni, ha szeretnénk látni ügyfelenként az egyes rendelések közt eltelt időt? Az adatainkat általában egy adatbázisban tároljuk, ezért mindenképpen lekérdezést kell írnunk. Az alábbi lehetőségek közül választhatunk:
- A lekérdezés eredményét kitesszük excelbe, sorba rendezzük (ha nem tettük volna meg a lekérdezésben), majd az így kapott adattábla utolsó oszlopa utáni cellákban kiszámítjuk az aktuális és az előző sorban szereplő dátumok közti különbséget.
- Már magában a lekérdezésben kiszámítjuk a rendelések közt eltelt időt. Ekkor az alábbihoz hasonló SQL lekérdezést kell írnunk:
- Adott a rendeléseket tartalmazó tábla (view): Rendelesek
SELECT partner_id,
rendeles_datum,
(rendeles_datum-elozo_rendeles_datum) eltelt_napok
FROM (SELECT R1.partner_id,
R1.rendeles_datum,
(SELECT max(R3.rendeles_datum)
FROM Rendelesek R3
WHERE R3.rendeles_datum > R1.rendeles_datum
AND R3.partner_id = R1.partner_id) elozo_rendeles_datum
FROM Rendelesek R1, Rendelesek R2)
Persze ezt még meg lehet bolondítani azzal, hogy számoljuk ki a rendelések összegét, a pótrendeléseket (kis összegű, a normál megrendelést pár napon belül közvetlenül követő) ne vegyük figyelembe, stb.
- Amennyiben csak az ügyfelek átlagos rendelési gyakoriságára vagyunk kíváncsiak, van egyszerűbb megoldás is. Vegyük a legkésőbbi és legkorábbi rendelési dátumot, és osszuk el a rendelések közti időszakok számával. Íme:
SELECT partner_id,
( max(rendeles_datum) - min(rendeles_datum) ) / ( count(*) - 1 )
FROM Rendelesek
GROUP BY partner_id
HAVING COUNT (*) > 1 -- Az 1 rendeléssel rendelkezőknél nem értelmezett az átlagos gyakoriság!
0 megjegyzés:
Megjegyzés küldése