Functies

advertisement
Functies
“The whole is more than the sum of its parts”
Jan van Egmond Lyceum
bzmr
16 maart 2017
- Aristoteles
Een kleine terugblik
●
●
Een database is een collectie van tabellen met rijen die
gegevens bevatten in de vorm van kolommen
Met SQL kunnen we gegevens opvragen en filteren:
–
SELECT: Geef aan dat we een selectie willen maken
●
DISTINCT: Geeft voor elke waarde uit de kolom(men) maar één rij terug
–
kolom1, kolom2 FROM tabel: Geeft aan welke kolommen we uit
welke tabel we selecteren
–
WHERE kolom operator waarde: Geeft aan dat er voorwaarden
gelden voor de waarden in een rij
●
Gebruik de operatoren = > < <= >= <>
●
Of gebruik LIKE met wildcards % (*) en _ (?)
●
Combineren mogelijk met AND en OR
Kolommen met numerieke waarden
●
Een database bevat twee soorten getallen
–
Numerieke waarden, die een hoeveelheid voorstellen
●
–
Indexes, of identifiers, die een uniek aanwijzend label voorstellen
●
●
llnnr, boeknr, auteurnr etc.
SQL weet het verschil niet
–
●
aantalpags, boete, etc.
Maar wij gelukkig wel
Numerieke waarden kunnen worden verwerkt door SQLfuncties
SUM
●
Sommeert de waardes uit een kolom van de resultaattabel
SELECT SUM(BEDRAG) FROM TRANSACTIES
●
Resultaattabel zijn de rijen nadat de voorwaardes gesteld zijn:
SELECT SUM(BEDRAG) FROM TRANSACTIES WHERE BEDRAG > 30
●
Een query met een functie resulteert in maar één rij
●
Geef je resultaatkolom een naam met AS
SELECT SUM(BEDRAG) AS TOTAAL FROM TRANSACTIES
●
Deze naam kun je weer in subquery’s gebruiken
–
Maar daarover later meer
SUM, AVG, MIN, MAX, COUNT
●
Nog meer functies!
–
SUM(Kolom)
●
–
AVG(Kolom)
●
–
Geeft de kleinste waarde voor Kolom terug
MAX(Kolom)
●
–
Berekent het gemiddelde van een kolom
MIN(Kolom)
●
–
Berekent de som van een kolom
Geeft de grootste waarde voor Kolom terug
COUNT(*)
●
Telt het aantal rijen in de resultaattabel
Groeperen
●
Je kon de klassen zien met
–
●
Je kan de leerlingen tellen met
–
●
●
●
SELECT DISTINCT KLAS FROM LEERLINGEN
SELECT COUNT(*) FROM LEERLINGEN
Dus gaan we de leerlingen tellen met:
–
SELECT COUNT(*), KLAS FROM LEERLINGEN ???
–
Maar dat werkt niet, want COUNT(*) telt alle rijen
Oplossing: Groeperen!
–
SELECT COUNT(*), KLAS FROM LEERLINGEN GROUP BY KLAS
–
SQL voert nu de functie COUNT uit op alle subgroepen die het maakt van de GROUP
BY kolom
GROUP BY gedraagt zich hetzelfde als DISTINCT, maar voert daarnaast ook
de functies uit op elke groep.
Aan de slag
●
Paragraaf 6 staat voor jullie klaar
●
Het wordt steeds interessanter
●
Straks gaan we meerdere tabellen met elkaar
combineren
Download