Skip to content

SQL:n aggregaattifunktiot selitettynä

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ää
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
Kerää muut kuin NULL-syötteet taulukkoon.SELECT ARRAY_AGG(total) FROM orders
Kerää syöterivit JSON-taulukkoon; JSONB-muoto tallentaa jäsennetyn binäärimuodon.SELECT JSONB_AGG(user_id) FROM orders
TRUE, kun jokainen / mikä tahansa muu kuin NULL-syöte on tosi.SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
Vakioalias BOOL_AND:lle.SELECT EVERY(total > 0) FROM orders
Interpoloitu / lähimmän sijaluvun prosentiili lajitellusta syötteestä; vaatii WITHIN GROUPin.SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
Yleisin syötearvo; järjestettyä joukkoa käyttävä kooste Postgresissa.SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
Välittää lajittelujärjestyksen järjestysjoukko- ja hypoteettisen joukon koosteille.SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
Rajoittaa koosteen riveihin, jotka läpäisevät ehdon.SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
Lajittelee arvot ennen kuin kooste yhdistää tai kerää ne.SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
COUNT(*) ja COUNT(1) laskevat jokaisen rivin; COUNT(col) ohittaa NULL-syötteet.SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
Muiden kuin NULL-arvojen otoksen keskihajonta. STDDEV_POP antaa perusjoukon muodon; paljaan nimen oletus vaihtelee moottorittain.SELECT STDDEV(total) FROM orders
Muiden kuin NULL-arvojen otosvarianssi (STDDEV:n neliö). VAR_SAMP ja VAR_POP nimeävät kummankin muodon.SELECT VARIANCE(total) FROM orders