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