11 - Penguin

Transkript

11 - Penguin
Databáze standardu SQL, díl 11.
Agregace
praxe
databáze standardu SQL
Jde pøece jen o nejednoduchou problematiku, takže jedeme dál...
Naše 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 umožní demonstrovat
i další pohledy na data pomocí agregace. Nabízí se napøíklad denní pohled na
výdaje na potraviny umožnìný pøíkazem:
SELECT DEN, SUM(PLACENO) UTRATIL
v SQL
(dokonèení)
V tomto konkrétním pøípadì jen zdánlivì nedošlo k agregaci tøí páteèních potravin podle jednotky množství, protože byl nákup málo rozmanitý. Pokud by
nás zajímal obsah tašky 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í obsažená 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 každou potravinu. Tak vznikne velmi užiteè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í taška.
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 složený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 položek:
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 možná 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é množství jednotlivého prodaného zboží a celkovou tržbu za
nìj podle dnù v týdnu a to všechno 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 družstev 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 družstev, 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 zkoušek 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í družstev 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í pokaždé jiné poøadí
v odpovìdi na SQL dotaz. Agregace provádí spojování informací a sèítání množství, zatímco tøídìní pouze usnadòuje
pohled na výsledek pod požadovaný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øíslušných sloupcù
oddìlené èárkou. Nejde o nic jiného než
o popis složené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
Vrame 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

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...

Více

Prohlédnout - Farnost Nový Hrozenkov

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...

Více

pokyny autorům autor guidelines

pokyny autorům autor guidelines Pokud se odkazuje na publikaci více než tøí autorù, zkracuje se citace s použitím zkratky „et al.“. (Prader et al., 1976). Je-li v referenèním seznamu uvedeno více publikací jednoho autora stejného...

Více

padesát svíček pro portu

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...

Více

1.úvodní slovo ředitele podniku

1.úvodní slovo ředitele podniku a rozpracovaností. Loòský rok dal podniku pøíležitost posílit sebevìdomí a umožnil 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ý...

Více

firelog xp

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...

Více