Skip to content

SQL-aggregatfunktioner forklaret

SQL-aggregatfunktioner, GROUP BY, HAVING samt distinct/avancerede aggregater, koblet til returværdier og eksempler på én linje over en ordretabel.

Aggregatfunktioner sammenfletter mange rækker til ét skalarresultat. GROUP BY partitionerer rækker efter nøgle før aggregation. HAVING filtrerer grupper efter aggregation. NULL-input springes over af alle aggregater undtagen COUNT(*).

Referencetabel · 29 poster
29 of 29 rows
Skalære
Antal inputværdier, der ikke er NULL; COUNT(*) tæller alle rækker.SELECT COUNT(*) FROM orders
Summen af numeriske værdier, der ikke er NULL. Returnerer NULL på et tomt sæt.SELECT SUM(total) FROM orders
Aritmetisk gennemsnit af numeriske værdier, der ikke er NULL. NULL-input ignoreres.SELECT AVG(total) FROM orders
Mindste værdi, der ikke er NULL, over enhver sammenlignelig type.SELECT MIN(total) FROM orders
Største værdi, der ikke er NULL, over enhver sammenlignelig type.SELECT MAX(total) FROM orders
Grupperede
Partitionerer inputrækker efter nøgle; aggregater kører pr. partition.SELECT user_id, SUM(total) FROM orders GROUP BY user_id
Prædikat evalueret pr. gruppe efter aggregation. Erstatter WHERE for aggregater.SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
Flere aggregater beregnet pr. gruppe i ét gennemløb.SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
Beregner flere grupperinger i én sætning; nøgler uden for det aktuelle sæt returnerer NULL.SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
Kortform for hierarkibaserede grouping sets; tilføjer subtotaler og en grand total.SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
Kortform for enhver kombination af de anførte nøgler som grouping sets.SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
Blander almindelige gruppenøgler med grouping sets i én klausule.SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
Beholder den første række pr. nøgle i sorteringsrækkefølge. Postgres-udvidelse.SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
Distinct og avancerede
Antal unikke værdier, der ikke er NULL. Fjerner dubletter først.SELECT COUNT(DISTINCT user_id) FROM orders
Estimerer antallet af distinct-værdier med begrænset fejl; bygget til store input.SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
Sammenkæder strenge, der ikke er NULL, med en separator.SELECT STRING_AGG(user_id::text, ',') FROM orders
Sammenkæder strenge, der ikke er NULL; MySQL-navnet for STRING_AGG.SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders
Samler inputværdier, der ikke er NULL, i et array.SELECT ARRAY_AGG(total) FROM orders
Samler inputrækker i et JSON-array; JSONB-formen lagrer parset binært.SELECT JSONB_AGG(user_id) FROM orders
TRUE, når enhver / en vilkårlig inputværdi, der ikke er NULL, er sand.SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
Standardalias for BOOL_AND.SELECT EVERY(total > 0) FROM orders
Interpoleret / nærmeste-rang percentil over det sorterede input; kræver WITHIN GROUP.SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
Hyppigste inputværdi; et ordered-set-aggregat i Postgres.SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
Giver sorteringsrækkefølgen videre til ordered-set- og hypothetical-set-aggregater.SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
Begrænser aggregatet til de rækker, der opfylder betingelsen.SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
Sorterer værdierne, før aggregatet sammenkæder eller samler dem.SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
COUNT(*) og COUNT(1) tæller hver række; COUNT(col) springer NULL-input over.SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
Stikprøve-standardafvigelse af numeriske værdier, der ikke er NULL. STDDEV_POP giver populationsformen; standarden for det bare navn afviger pr. engine.SELECT STDDEV(total) FROM orders
Stikprøvevarians af numeriske værdier, der ikke er NULL (kvadratet på STDDEV). VAR_SAMP og VAR_POP navngiver hver form.SELECT VARIANCE(total) FROM orders