SQL:n aggregaattifunktiot, GROUP BY, HAVING sekä erilliset ja edistyneet koosteet, kuvattuna paluuarvojen ja yhden rivin esimerkkien avulla orders-taulussa.
Aggregaattifunktiot tiivistävät monta riviä yhdeksi skalaaritulokseksi. GROUP BY jakaa rivit avaimen mukaan ennen koostamista. HAVING suodattaa ryhmiä koostamisen jälkeen. NULL-syötteet ohittaa jokainen aggregaatti paitsi COUNT(*).
Referenssitaulukko · 29 merkintää
SQL:n aggregaattifunktiotExplained
29 of 29 rows
Skalaarit
Muiden kuin NULL-syötteiden lukumäärä; COUNT(*) laskee kaikki rivit.
SELECT COUNT(*) FROM orders
Muiden kuin NULL-arvojen numeeristen arvojen summa. Palauttaa NULL tyhjällä joukolla.
SELECT SUM(total) FROM orders
Muiden kuin NULL-arvojen numeerinen keskiarvo. NULL-syötteet ohitetaan.
SELECT AVG(total) FROM orders
Pienin muu kuin NULL -arvo millä tahansa vertailukelpoisella tyypillä.
SELECT MIN(total) FROM orders
Suurin muu kuin NULL -arvo millä tahansa vertailukelpoisella tyypillä.
SELECT MAX(total) FROM orders
Ryhmitetyt
Jakaa syöterivit avaimen mukaan; koosteet suoritetaan osiota kohti.
SELECT user_id, SUM(total) FROM orders GROUP BY user_id
Predikaatti, joka arvioidaan ryhmäkohtaisesti koostamisen jälkeen. Korvaa WHERE:n koosteille.
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
Useita koosteita lasketaan ryhmäkohtaisesti yhdellä läpikäynnillä.
SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
Laskee useita ryhmittelyjä yhdessä lauseessa; nykyisen joukon ulkopuoliset avaimet palauttavat NULLin.
SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
Lyhytmuoto hierarkiapohjaisille ryhmittelyjoukoille; lisää välisummat ja kokonaissumman.
SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
Lyhytmuoto kaikille lueteltujen avainten yhdistelmille ryhmittelyjoukkoina.
SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
Yhdistää tavalliset ryhmittelyavaimet ja ryhmittelyjoukot yhdessä lauseessa.
SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
Säilyttää ensimmäisen rivin avainta kohti lajittelujärjestyksessä. Postgres-laajennus.
SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
Erilliset ja edistyneet
Uniikkien, muiden kuin NULL-arvojen lukumäärä. Poistaa duplikaatit ensin.
SELECT COUNT(DISTINCT user_id) FROM orders
Arvioi eri arvojen lukumäärän rajatulla virheellä; suunniteltu suurille syötteille.
SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
Yhdistää muut kuin NULL-merkkijonot erottimella.
SELECT STRING_AGG(user_id::text, ',') FROM orders
Yhdistää muut kuin NULL-merkkijonot; MySQL:n nimi STRING_AGG:lle.
SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders