120 likes | 219 Vues
Learn about SQL aggregate functions like COUNT, MAX, MIN, AVG, and SUM. Understand their syntax and usage in queries for data analysis. Explore examples with group by clauses for advanced data grouping.
E N D
Aggregaattifunktiot (1) • Mahdollistavat usean rivin yhdistämisen yhdeksi tulostaulun riviksi • SQL:ssä seuraavat aggregaattifunktiot: • Lukumäärä COUNT • Maksimi MAX, minimi MIN • Keskiarvo AVG • Summa SUM
Aggregaattifunktiot (2) • Kirjoitetaan kyselyn SELECT-osaan muodossa Funktio(Attribuutti) • Kyselyssä lisäksi normaalit osat FROM ja WHERE, jotka toimivat normaalisti
Aggregaattifunktiot (3) • SELECT-osa voi sisältää vain aggregaattifunktioita, tuloksessa vain 1 rivi • Edellyttäen, että ryhmittelyattribuutteja ei käytetä • Aggregaattifunktioita sisältävät kyselyt evaluoidaan tavalliseen tapaan • Muodostetaan FROM-osan relaatio • Valitaan WHERE-osassa määritellyt rivit • Lasketaan SELECT-osassa määritellyt aggregaattifunktiot
COUNT(Attribuutti) • Palauttaa attribuutin arvojen määrän • Arvojen ei tarvitse poiketa toisistaan, joten laskee käytännössä relaation rivien määrän • Em. syystä attribuutin sijasta voidaan käyttää myös jokerimerkkiä * SELECT COUNT(*) FROM Toimittaja; SELECT COUNT(*) FROM Asiakas, Tilaus WHERE Etunimi=’Hanhikki’ AND AsiakasId=Asiakas.Id; SELECT COUNT(DISTINCT AsiakasId) FROM Tilaus;
MAX(Attribuutti), MIN(Attribuutti) • Palauttavat attribuutin arvojen maksimin tai minimin • Edellytyksenä, että attribuutin arvojoukko on järjestetty SELECT MAX(Hinta) FROM Tuote; SELECT MIN(Hinta) AS Minimi, MAX(Hinta) AS Maksimi FROM Asiakas, Tilaus, Tuote WHERE Asiakas.Etunimi=’Laupias’ AND Asiakas.Id=AsiakasId AND Tuote.Id=TuoteId;
AVG(Attribuutti) • Palauttaa attribuutin arvojen keskiarvon • Edellytyksenä, että attribuutin arvojoukko on lukujoukko SELECT AVG(Hinta) FROM Tuote, Toimittaja WHERE Toimittaja.Nimi=’Jaskan vimpain’ AND ToimittajaId=Toimittaja.Id;
SUM(Attribuutti) • Palauttaa attribuutin arvojen summan • Edellytyksenä, että attribuutin arvojoukko on lukujoukko SELECT SUM(Hinta) FROM Asiakas, Tilaus, Tuote WHERE Asiakas.Etunimi=’Laupias’ AND Asiakas.Id=AsiakasId AND Tuote.Id=TuoteId;
Ryhmittelyattribuutit (1) • Toisinaan on tarpeen kohdistaa funktiot pienempiin kokonaisuuksiin • Esim. hae kunkin jotain tilanneen asiakkaan tilausten arvo • Lisätään kyselyyn GROUP BY –osa, jossa luetellaan ryhmittelyattribuutit
Ryhmittelyattribuutit (2) • Evaluointijärjestys • Muodostetaan FROM-osan relaatio, Valitaan WHERE-osassa luetellut rivit • Etsitään ryhmittelyattribuuttien erilaiset arvoyhdelmät; jokaista erilaista yhdistelmää kohden tuloksessa on yksi rivi • Lasketaan arvoyhdelmille SELECT-osassa luetellut aggregaattifunktiot • SELECT-osassa vain aggregaattifunktioita ja ryhmittelyattribuutteja!
Ryhmittelyattribuutit (3) SELECT ToimittajaId, MIN(Hinta), MAX(Hinta) FROM Tuote GROUP BY ToimittajaId;
Ryhmittelyattribuutit (4) • Hae toimittajien nimet sekä kunkin toimittaja toimittamien tuotteiden minimi- ja maksimihinta SELECT Toimittaja.Nimi, MIN(Hinta), MAX(Hinta) FROM Tuote, Toimittaja WHERE ToimittajaId=Toimittaja.Id GROUP BY Toimittaja.Nimi;