Statistische functies (aggregaatfuncties) SQL Statistische functies (aggregaatfuncties)
SELECT Verticale doorsnede van verzameling Prod_code Prod_aantal Prod_omschr
WHERE Horizontale doorsnede van verzameling Prod_code Prod_aantal Prod_omschr
SELECT/WHERE Gecombineerd Prod_code Prod_aantal Prod_omschr
Voorbeeldtabel Product Stel, we hebben de volgende tabel Prod_code Prod_aantal Prod_omschr A 1 Product A B 2 Product B C 3 Product C D 4 Product D E Product E F Product F G Product G H Product H I 5 Product I
Producten waarvan er 4 zijn?
Producten waarvan er geen zijn?
Producten waarvan er minder dan 3 zijn?
Product waarvan het meeste is?
Totaal aantal producten? 24
Telling van producten? 9
Aggregaatfuncties De laatste 3 voorbeelden maken gebruik van aggregaatfuncties Dat wil zeggen dat er verdichte (compacte) info wordt gegenereerd over meerdere regels Het resultaat is altijd 1 regel! MAX(), MIN(), AVG(), SUM(), COUNT() Achter SELECT component, al dan niet gecombineerd met kolomnaam
Product waarvan het meeste is? SELECT MAX(Prod_aantal) FROM Product 5
Totaal aantal producten? SELECT SUM(Prod_aantal) FROM PRODUCT 24
Telling van producten? SELECT COUNT(*) FROM PRODUCT 9
PAS OP! Statistische functies zijn niet zomaar te combineren met “gewone” opvragingen Immers, statistische functies leveren altijd maar één record op; reguliere queries kunnen resulteren in 0, 1 of meer rijen Dus: SELECT plaats, COUNT(*) FROM lezer WHERE plaats = ‘Dordrecht’ is FOUT!
PAS OP (2)! Als er gevraagd wordt naar aantallen in de zin van telling, gebruik je de COUNT() functie Als er gevraagd wordt naar een optelling, gebruik je de SUM() functie De SUM() functie werkt dan ook alleen met numerieke kolommen!
Opdrachten Bepaal de waarde op basis van tabel Product in dia 5: COUNT(*) COUNT(Prod_aantal) MIN(Prod_aantal) MAX(Prod_aantal) SUM(Prod_aantal) AVG(Prod_aantal) COUNT(DISTINCT Prod_aantal) MIN(DISTINCT Prod_aantal) MAX(DISTINCT Prod_aantal) SUM(DISTINCT Prod_aantal) AVG(DISTINCT Prod_aantal) Maak de opdrachten 10.9 en 10.10 uit het boek (blz. 364 en 365)