Skip to content

SQL-aggregatfunksjoner forklart

SQL-aggregatfunksjoner, GROUP BY, HAVING og distinkte/avanserte aggregater, koblet til returverdier og eksempler på én linje på en orders-tabell.

Aggregatfunksjoner slår sammen mange rader til ett skalært resultat. GROUP BY deler radene inn etter nøkkel før aggregeringen. HAVING filtrerer grupper etter aggregeringen. NULL-input hoppes over av alle aggregater unntatt COUNT(*).

Referansetabell · 29 oppføringer
29 of 29 rows
Skalære
Antall inputverdier som ikke er NULL; COUNT(*) teller alle rader.SELECT COUNT(*) FROM orders
Summen av numeriske verdier som ikke er NULL. Returnerer NULL på et tomt sett.SELECT SUM(total) FROM orders
Aritmetisk gjennomsnitt av numeriske verdier som ikke er NULL. NULL-input ignoreres.SELECT AVG(total) FROM orders
Minste verdi som ikke er NULL, for enhver sammenlignbar type.SELECT MIN(total) FROM orders
Største verdi som ikke er NULL, for enhver sammenlignbar type.SELECT MAX(total) FROM orders
Grupperte
Deler inputradene inn etter nøkkel; aggregatene kjøres per partisjon.SELECT user_id, SUM(total) FROM orders GROUP BY user_id
Predikat evaluert per gruppe etter aggregering. Erstatter WHERE for aggregater.SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
Flere aggregater beregnet per gruppe i én gjennomkjøring.SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
Beregner flere grupperinger i én setning; nøkler utenfor det gjeldende settet returnerer NULL.SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
Kortform for hierarkibaserte grupperingssett; legger til delsummer og en totalsum.SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
Kortform for enhver kombinasjon av de oppgitte nøklene som grupperingssett.SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
Blander vanlige gruppenøkler med grupperingssett i én klausul.SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
Beholder den første raden per nøkkel i sorteringsrekkefølgen. Postgres-utvidelse.SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
Distinkte og avanserte
Antall unike verdier som ikke er NULL. Fjerner duplikater først.SELECT COUNT(DISTINCT user_id) FROM orders
Estimerer antallet distinkte verdier med begrenset feil; laget for store datamengder.SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
Setter sammen strenger som ikke er NULL, med et skilletegn.SELECT STRING_AGG(user_id::text, ',') FROM orders
Setter sammen strenger som ikke er NULL; MySQL-navnet på STRING_AGG.SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders
Samler inputverdier som ikke er NULL, i en matrise.SELECT ARRAY_AGG(total) FROM orders
Samler inputradene i en JSON-matrise; JSONB-formen lagrer tolkede binærdata.SELECT JSONB_AGG(user_id) FROM orders
SANN når alle / minst én av inputverdiene som ikke er NULL, er sanne.SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
Standardalias for BOOL_AND.SELECT EVERY(total > 0) FROM orders
Interpolert / nærmeste-ranger persentil over det sorterte inputtet; krever WITHIN GROUP.SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
Hyppigst forekommende inputverdi; et aggregat for ordnede sett i Postgres.SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
Viderefører sorteringsrekkefølgen til aggregater for ordnede og hypotetiske sett.SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
Begrenser aggregatet til radene som oppfyller betingelsen.SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
Sorterer verdiene før de kobles sammen eller samles av aggregatet.SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
COUNT(*) og COUNT(1) teller alle rader; COUNT(col) hopper over NULL-input.SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
Utvalgsstandardavvik for numeriske verdier som ikke er NULL. STDDEV_POP gir populasjonsformen; standardinnstillingen for det korte navnet varierer per motor.SELECT STDDEV(total) FROM orders
Utvalgsvarians for numeriske verdier som ikke er NULL (kvadratet av STDDEV). VAR_SAMP og VAR_POP navngir hver form.SELECT VARIANCE(total) FROM orders