GROUP BY
Yksi ongelmallisimmista asioista SQL-kyselyissä tuntuu olevan GROUP BY.
Tällä sivulla on kerrottu muutama vinkki järkevien ryhmittelykyselyjen tekemiseen.
GROUP BYon eri asia kuinORDER BYORDER BYjärjestää kyselyn tulokset haluttuun järjestykseen esim. suuruusjärjestys tai aakkosjärjestys.GROUP BYtaasen ryhmittelee kyselytuloksen rivit eikä missään nimessä järjestä. Jos hakutulos sattumalta on aakkosjärjestyksessäGROUP BY:n jälkeen niin se on vain silkkaa tuuria.Järjestäminen
SELECT Nimi FROM Taulu ORDER BY NimiRyhmittely
SELECT ID, COUNT(*) FROM Taulu GROUP BY IDGROUP BY-operaation käyttämisessä ei ole mitään järkeä jollei kyselyn lopputuloksessa käytetä yhteenvetofunktioita (SUM, MAX, MIN, AVG, COUNT). Mitä hyötyä on ryhmitellä kyselyn tulosta jos niillä ryhmillä ei ole tarkoitus tehdä mitään? Siis aina jos kyselyssä onGROUP BY-rivi niin kyselystä pitää löytyä ainakin yhden kerranSUM, MAX, MIN, AVG, COUNT.-
Kiinteästi
GROUP BY-rivin kanssa kulkeeHAVINGjolla voidaan rajoittaa lopputulokseen tulevia ryhmiä.HAVING-lauseessa ei ole mitään järkeä ilman aiemmin mainittuja koostefunktioita koskaHAVINGkohdistuu aina ryhmään eli useaan tietueeseen kerralla. Jos lopputulosta pitää rajoittaa yksittäisen tietueen kentän sisällön perusteella niin tämä rajoitusehto laitetaanWHERE-osaan.SELECT ID, COUNT(*) FROM Taulu WHERE ID> 10 -- Kelpuutetaan vain ne ID:t jotka ovat suurempia kuin 10 GROUP BY ID -- Tehdään ryhmät id-kentän perusteella HAVING COUNT(*)> 2 -- Otetaan lopputulokseen vain ne ryhmät joissa yli kaksi tietuetta

Käyttäjien kommentit