Fungsi agregat SQL, GROUP BY, HAVING, serta agregat distinct/lanjutan dipetakan kepada nilai pulangan dan contoh satu baris pada jadual orders.
Fungsi agregat menciutkan banyak baris kepada satu hasil skalar. GROUP BY mempartisyenkan baris mengikut kunci sebelum pengagregatan. HAVING menapis kumpulan selepas pengagregatan. Input NULL dilangkau oleh semua agregat kecuali COUNT(*).
Jadual rujukan · 29 entri
Fungsi agregat SQLExplained
29 of 29 rows
Skalar
Kiraan nilai input bukan NULL; COUNT(*) mengira semua baris.
SELECT COUNT(*) FROM orders
Jumlah nilai berangka bukan NULL. Memulangkan NULL pada set kosong.
SELECT SUM(total) FROM orders
Purata aritmetik nilai berangka bukan NULL. Input NULL diabaikan.
SELECT AVG(total) FROM orders
Nilai bukan NULL terkecil merentas sebarang jenis yang boleh dibandingkan.
SELECT MIN(total) FROM orders
Nilai bukan NULL terbesar merentas sebarang jenis yang boleh dibandingkan.
SELECT MAX(total) FROM orders
Dikumpulkan
Mempartisyenkan baris input mengikut kunci; agregat berjalan per partisyen.
SELECT user_id, SUM(total) FROM orders GROUP BY user_id
Predikat dinilai per kumpulan selepas pengagregatan. Menggantikan WHERE untuk agregat.
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
Beberapa agregat dikira per kumpulan dalam satu laluan.
SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
Mengira beberapa pengumpulan dalam satu penyata; kunci di luar set semasa memulangkan NULL.
SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
Singkatan untuk grouping set berasaskan hierarki; menambah subtotal dan jumlah keseluruhan.
SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
Singkatan untuk setiap gabungan kunci yang disenaraikan sebagai grouping set.
SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
Mencampurkan kunci kumpulan biasa dengan grouping set dalam satu klausa.
SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
Menyimpan baris pertama per kunci mengikut turutan isihan. Sambungan Postgres.
SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
Distinct dan lanjutan
Kiraan nilai unik bukan NULL. Nyah-duplikasi dahulu.
SELECT COUNT(DISTINCT user_id) FROM orders
Menganggar kiraan nilai distinct dengan ralat terbatas; dibina untuk input besar.
SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
Menggabungkan rentetan bukan NULL dengan pembatas.
SELECT STRING_AGG(user_id::text, ',') FROM orders
Menggabungkan rentetan bukan NULL; nama MySQL untuk STRING_AGG.
SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders
Mengumpulkan nilai input bukan NULL ke dalam tatasusunan.
SELECT ARRAY_AGG(total) FROM orders
Mengumpulkan baris input ke dalam tatasusunan JSON; bentuk JSONB menyimpan binari terurai.
SELECT JSONB_AGG(user_id) FROM orders
TRUE apabila setiap / mana-mana nilai input bukan NULL ialah benar.
SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
Alias piawai untuk BOOL_AND.
SELECT EVERY(total > 0) FROM orders
Persentil interpolasi / pangkat terdekat atas input terisih; memerlukan WITHIN GROUP.
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
Nilai input paling kerap; agregat ordered-set dalam Postgres.
SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
Menghantar turutan isihan kepada agregat ordered-set dan hypothetical-set.
SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
Mengehadkan agregat kepada baris yang lulus syarat.
SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
Mengisih nilai sebelum digabungkan atau dikumpulkan oleh agregat.
SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
COUNT(*) dan COUNT(1) mengira setiap baris; COUNT(col) melangkau input NULL.
SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
Sisihan piawai sampel bagi nilai berangka bukan NULL. STDDEV_POP memberi bentuk populasi; lalai nama kosong berbeza mengikut enjin.
SELECT STDDEV(total) FROM orders
Varians sampel bagi nilai berangka bukan NULL (kuasa dua STDDEV). VAR_SAMP dan VAR_POP menamakan setiap bentuk.