Dostávame sa k prvej biznisovej otázke:
Koľko jednotlivý predajca predal áut v danom regióne, pričom platí, že predajcovia kolujú medzi predajňami.
Na nasledujúcom obrázku máme vyznačné tabuľky, vrámci ktorých budeme pripravovať query:
Ak použijeme jednoduchú query na počet záznamov (predajov) dostaneme nasledujúci výsledok:
select count(*) as 'Počet' from sales; výsledok: 17472
Čo je na Škoda auto celkom málo, avšak relevantné data ešte len prídu. Ak si rozšírime query podľa rokov a mesiacov, dostaneme nasledujúci výsledok:
select Mesiac, Rok, count(*) as 'Počet' from sales group by Mesiac, Rok;
Teraz nasleduje pripojenie Predajcov, takže použijeme Join klauzulu. Všimnite si logiku pochodu, kde celkový počet rozdeľujem do detailov, pričom Grand Total mi slúži ako kontrola selektu (Predchádzajúcu tabuľku som pripravil v Exceli samozrejme):
select sales.Mesiac as 'Mesiac', sales.Rok as 'Rok', Dealer.Predajca as 'Díler', count(*) as 'Počet' from sales left join Dealer on sales.Predajca = Dealer.ID group by sales.Mesiac, sales.Rok, Dealer.Predajca;
Výsledok, vzhľadom k tomu, že sa už v tomto prípade jedná o celkom veľkú Pivotku je obmedzený na rok 2014 vo filtri, kde si môžeme prepínaním overiť predajnosť dealerov vzhľadom k totálu (728 vozidiel pre všetky mesiace, 672 ročný predaj každého dílera):
Vezmime si teraz napríklad Romana, ktorého celkový predaj za Január v roku 2014 má byť 56 vozidiel. Rozšírime tento skript o hodnoty z tabuľky City:
select sales.Mesiac as 'Mesiac', sales.Rok as 'Rok', City.Mesto as 'Mesto', Dealer.Predajca as 'Díler', count(*) as 'Počet' from sales left join Dealer on sales.Predajca = Dealer.ID left join City on sales.Mesto = City.ID group by sales.Mesiac, sales.Rok, Dealer.Predajca, City.Mesto;
Celkovo si všimnite, že sa nám mesačná predajnosť zhoduje (56 áut) spolu s celkovou predajnosťou dílera za rok 2014 (672 áut).
Ako posledný skript budeme uvažovať doplnenie o typ auta, t.z. pridanie tabuľky Car:
select sales.Mesiac as 'Mesiac', sales.Rok as 'Rok', City.Mesto as 'Mesto', Car.Auto as 'Auto', Dealer.Predajca as 'Díler', count(*) as 'Počet' from sales left join Dealer on sales.Predajca = Dealer.ID left join City on sales.Mesto = City.ID left join Car on sales.Auto = car.ID group by sales.Mesiac, sales.Rok, Dealer.Predajca, City.Mesto, Car.Auto;
Platí, že pre každý mesiac predá presne po jednom kuse špecifického modelu.
Ako už iste tušíte, tieto data nepatria medzi najvhodnejšie vrámci budovania reportov. No vzhľadom k tomu, že chcem aby sa Vám SQL-ko dostalo čo najskôr pod kožu, zvolil som túto predbežnú cvičnú databázku (17472 = 728 x 12 x 2 – Tabuľka 1 alebo 56 x 12 x 13 x [2 – Filter] – Tabuľka2 alebo 8 x 7 x 12 x [13 x 2 – Filter] alebo 7 x 1 x 12 x [13 x 2 x 8 – Filter] – Tabuľka3).
Nabudúce si povieme niečo k obsahu reportu, resp. ako má report vyzerať a budeme kresliť