120 likes | 216 Views
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)
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;