11 - Penguin
Transkript
Databáze standardu SQL, díl 11. Agregace praxe databáze standardu SQL Jde pøece jen o nejednoduchou problematiku, take jedeme dál... Nae pøedchozí dotazy do tabulky NAKUP budou optimální, pokud vytvoøíme index podle sloupce CO, který hraje roli jak pøi restrikci, tak pøi agregaci a tøídìní: CREATE INDEX NAKUP_CO ON NAKUP ( CO ); Tabulka NAKUP umoní demonstrovat i dalí pohledy na data pomocí agregace. Nabízí se napøíklad denní pohled na výdaje na potraviny umonìný pøíkazem: SELECT DEN, SUM(PLACENO) UTRATIL v SQL (dokonèení) V tomto konkrétním pøípadì jen zdánlivì nedolo k agregaci tøí páteèních potravin podle jednotky mnoství, protoe byl nákup málo rozmanitý. Pokud by nás zajímal obsah taky pøi pondìlním pøedzásobení na celý týden, staèí vynechat restrikci na pátek a následujícím dotazem vznikne tabulka 14: ORDER BY DEN; Tak vznikne z tabulky 8 názorná tabulka 12, sledující rozmaøilost po dnech v týdnu. koda jen, e data v ní obsaená jsou setøídìna podle abecedy, a ne podle poøadí dne v týdnu. DEN UTRATIL PATEK 138 PONDELI 87 U TERY 60 SELECT CO, COUNT(*) POCET_HODNOT, MIN(PLACENO/KOLIK) MINIMALNI, AVG(PLACENO/KOLIK) PRUMERNA, MAX(PLACENO/KOLIK) MAXIMALNI SELECT SUM(KOLIK) MNOZSTVI, JEDNOTKA FROM NAKUP FROM NAKUP GROUP BY CO GROUP BY JEDNOTKA ORDER BY CO; ORDER BY JEDNOTKA; Co dobrého pøináejí následující pøíkazy ze ivota? FROM NAKUP GROUP BY DEN Z ekonomického a statistického pohledu je rozumné mít pøehled o minimální, prùmìrné a maximální jednotkové cenì pro kadou potravinu. Tak vznikne velmi uiteèná tabulka 16 pomocí dotazu: MNOZSTVI JEDNOTKA 4,6 kg SELECT RODNE_CISLO, SUM(PRIJEM-VY- 10 ks DEJ) FROM DENIK 5 l GROUP BY RODNE_CISLO ORDER BY RODNE_CISLO; Tabulka 14. Pøedzásobení na týden. SELECT MESTO, AVG( HRUBA - DAN ), MAX Z tabulky NAKUP snadno odvodíme jednotkové ceny zboí pøíkazem SQL bez agregace: ( HRUBA ) FROM VYPLATA WHERE VYSKA < 130 AND MUZ GROUP BY MESTO ORDER BY MESTO; SELECT CO, DEN, PLACENO/KOLIK CENA, JEDNOTKA FROM NAKUP SELECT PORAD, COUNT(*) FROM TELEVI- ORDER BY CO, DEN; ZOR GROUP BY PORAD Tabulka 12. Které dny se utrácí. Tabulka 13 vznikla dotazem agregujícím podle sloupce JEDNOTKA. V tabulce 15 je pak dobrý pøehled o týdenním kolísání cen. ORDER BY PORAD; SELECT SUM(KOLIK) MNOZSTVI, JEDNOTKA FROM NAKUP WHERE DEN=PATEK GROUP BY JEDNOTKA ORDER BY JEDNOTKA; MNOZSTVI JEDNOTKA 2 kg 10 ks 3 l Tabulka 13. Páteèní nákupní taka. CO DEN CE N A JEDNOTKA AN AN AS PATEK 30 kg AN AN AS PONDELI 30 kg KU RE PONDELI 70 kg KU RE U TERY 60 kg MLEKO PATEK 16 l MLEKO U TERY 15 l VEJCE PATEK 3 ks Tabulka 15. Kolísání cen potravin. 212 duben 1999 sql11.p65 212 17.3.1999, 20:27 CO POCET_HODNOT MINIMALNI PRUMERNA MAXIMALNI AN AN AS 2 30 30 30 KU RE 2 60 65 70 MLEKO 2 15 15.5 16 VEJCE 1 3 3 3 ZOR GROUP BY STANICE ORDER BY STANICE; Agregace se sloeným klíèem DEN MNOZSTVI CE N A RU M PRAHA PO 1000 100 MLEKO PRAHA UT 10000 20 U H ERAK BRN O PO 50 200 U H ERAK PRAHA ST 60 250 U H ERAK PRAHA CT 500 110 MLEKO BRN O ST 2000 18 U H ERAK BRN O PA 400 103 Tabulka 17. Jak nám to jde v tabulce OBCHOD. SELECT ZBOZI, MESTO, SUM(MNOZSTVI) TOTAL FROM OBCHOD GROUP BY ZBOZI, MESTO ORDER BY ZBOZI, MESTO; Tak vznikne tabulka 18. V tabulce 19 vidíme výsledek obdobného dotazu, ale s jiným poøadím poloek: SELECT MESTO, ZBOZI, SUM(MNOZSTVI) hled do tabulky OBCHOD, který získáme pøíkazem: SELECT MESTO, ZBOZI, SUM (MNOZSTVI*CENA) PRACHY FROM OBCHOD GROUP BY ZBOZI, MESTO ORDER BY MESTO DESC, ZBOZI; Z tvaru dotazu moná plyne, kde se narodil autor tohoto èlánku. Zajímavé je sledovat promìnlivost zájmu o výrobky vzhledem ke dnu v týdnu. Následující dotaz urèí celkové mnoství jednotlivého prodaného zboí a celkovou trbu za nìj podle dnù v týdnu a to vechno bude setøídìno podle názvu zboí a názvu dne: SELECT ZBOZI, DEN SUM(MNOZSTVI) KOLIK, SUM(MNOZSTVI*CENA) PRACHY Nejen obchodníci potøebují agregaci. Urèitì i zpracování výsledkù sportovního víceboje jednotlivcù a drustev je ZB OZI MESTO T OT A L MLEKO BRN O 2000 MLEKO PRAHA 10000 RU M PRAHA 1000 U H ERAK BRN O 450 U H ERAK PRAHA 560 Tabulka 18. Zboí podle mìst. krásnou záminkou k agregaci. Bude vhodné si pøedstavit tabulku VICEBOJ se sloupci DRUZSTVO, CLEN, DISCIPLINA, DOPING a BODY. První tøi sloupce jsou jasné a obsahují názvy, zkratky nebo èísla drustev, sportovcù a disciplín víceboje. Trojice DRUZSTVO, CLEN, DISCIPLINA je zároveò unikátním klíèem pro pøímý pøístup, který zároveò zabraòuje podvádìní s vícenásobným vkládáMESTO Z B O ZI T OT A L BRN O MLEKO 2000 BRN O U H ERAK 450 PRAHA MLEKO 10000 PRAHA RU M 1000 PRAHA U H ERAK 560 Tabulka 19. Zboí podle mìst. ním dat. Sloupec DOPING obsahuje logické hodnoty YES a NO jako výsledky dopingových zkouek po jednotlivých disciplínách. Sloupec BODY je urèen pro ohodnocení výsledku jednotlivce v dané disciplínì. Prùbìné i celkové bodové hodnocení drustev je snadno zjistitelné dotazem: FROM OBCHOD GROUP BY ZBOZI, DEN SELECT DRUZSTVO, SUM(BODY) CELKEM ORDER BY ZBOZI, DEN; INTO VYSLEDOVKA TOTAL FROM OBCHOD FROM VICEBOJ GROUP BY ZBOZI, MESTO GROUP BY DRUZSTVO ORDER BY MESTO, ZBOZI; ORDER BY DRUZSTVO; JAROMÍR KUKAL 213 duben 1999 sql11.p65 213 17.3.1999, 20:27 praxe MESTO Pokud nás zajímá pohled na prodej jednotlivého zboí podle mìst, staèí napsat pøíkaz: FROM OBCHOD ORDER BY ZBOZI, DEN; Je vidìt rozdíl mezi agregací a tøídìním. V obou pøípadech vznikly stejné agregáty, ale mají pokadé jiné poøadí v odpovìdi na SQL dotaz. Agregace provádí spojování informací a sèítání mnoství, zatímco tøídìní pouze usnadòuje pohled na výsledek pod poadovaným úhlem. Dodavatel èehokoli do Brna potøebuje tabulku 19, zatímco výrobce uheráku nepohrdne tabulkou 18. Mnohem pragmatiètìjí je ekonomický po- ZB OZI bulky jako klíè ke shlukování øádkù do agregátù, staèí uvést za klíèové slovo GROUP BY názvy pøísluných sloupcù oddìlené èárkou. Nejde o nic jiného ne o popis sloeného klíèe pro agregaci. Pøedstavme si obchodní firmu, která sleduje prodej zboí v jednotlivých mìstech. Malá ukázka dat je v tabulce 17. VI*CENA) PRIJEM pøíloha Vrame se k obrázkùm 5 a 6 z minulého èísla. Chceme-li pouít víc sloupcù ta- SELECT MESTO, DEN, SUM (MNOZST- GROUP BY ZBOZI, DEN Tabulka 16. Statistické údaje o cenì potravin. SELECT STANICE, COUNT(*) FROM TELEVI- Copak asi znamená a komu by se hodil dotaz:
Podobné dokumenty
John Flanagan - Cloudapp.net
Eraka, tak jako většinu Skandijců, málo zajímaly umné
vzory a mistrovská práce. Hodně ho však zajímalo zlato
a věděl, že v Santa Sebille je ho nezvykle velké množství,
mnohem větší, než bylo na tak...
Prohlédnout - Farnost Nový Hrozenkov
Dvì knihy Kronik pravdìpodobnì vìtšina ètenáøù Bible zaøadí k nejobtížnìjším starozákonním knihám. Ne pro nároènost nauky a její komplikované vyjádøení, ale pro
obtížnost èetby. Dùvod mùžeme vyèíst...
pokyny autorům autor guidelines
Pokud se odkazuje na publikaci více ne tøí autorù,
zkracuje se citace s pouitím zkratky et al.. (Prader
et al., 1976). Je-li v referenèním seznamu uvedeno více
publikací jednoho autora stejného...
padesát svíček pro portu
cích jejich portovní prezentace a jestli v tomto směru Porta spíš
mládne, nebo stárne. Kolik osobností věnovalo Portě svou přízeň. Anebo nějaké podložené početní údaje v souvislosti se žánrovými po...
1.úvodní slovo ředitele podniku
a rozpracovaností. Loòský rok dal podniku pøíleitost posílit sebevìdomí a umonil mu získat na tuzemském i zahranièním
leteckém trhu významnou pozici. Pevnì vìøím, e rok 2008 bude neménì pøíznivý...
firelog xp
roce 1994 vytvořena technická komise ISO/TC 211
Geografická informace/Geomatika.
• Evropská unie, kde Evropský výbor pro normalizaci
(CEN) 90. léta uplynulého století – vlastní aktivity
• od roku 2...