Mga aggregate function ng SQL, GROUP BY, HAVING, at distinct/advanced na aggregates, na naka-map sa mga return value at one-line na halimbawa gamit ang orders table.
Pinaikli ng mga aggregate function ang maraming row sa iisang scalar result. Naghahati-hati ang GROUP BY ng mga row ayon sa key bago mag-aggregate. Nagsasala ang HAVING ng mga group pagkatapos ng aggregation. Nilalaktawan ng bawat aggregate ang NULL inputs maliban sa COUNT(*).
Talaan ng sanggunian · 29 mga entry
Mga aggregate function ng SQLExplained
29 of 29 rows
Scalar
Bilang ng mga non-null na input value; bumibilang ang COUNT(*) ng lahat ng row.
SELECT COUNT(*) FROM orders
Kabuuan ng mga non-null na numeric value. Nagbabalik ng NULL sa walang laman na set.
SELECT SUM(total) FROM orders
Aritmetikong mean ng mga non-null na numeric value. Nilalaktawan ang NULL inputs.
SELECT AVG(total) FROM orders
Pinakamaliit na non-null na value sa anumang comparable na type.
SELECT MIN(total) FROM orders
Pinakamalaking non-null na value sa anumang comparable na type.
SELECT MAX(total) FROM orders
Naka-group
Hinihiwa ang mga input row ayon sa key; tatakbo ang aggregates kada partition.
SELECT user_id, SUM(total) FROM orders GROUP BY user_id
Predicate na sine-evaluate kada group pagkatapos ng aggregation. Kapalit ng WHERE para sa mga aggregate.
SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 5
Ilang aggregate ang kinakalkula kada group sa iisang pass.
SELECT user_id, COUNT(*), SUM(total), AVG(total) FROM orders GROUP BY user_id
Nagkakalkula ng ilang grouping sa iisang statement; ang mga key sa labas ng kasalukuyang set ay nagbabalik ng NULL.
SELECT user_id, region, SUM(total) FROM orders GROUP BY GROUPING SETS ((user_id), (region), ())
Shorthand para sa hierarchy-based na grouping sets; nagdaragdag ng mga subtotal at grand total.
SELECT region, user_id, SUM(total) FROM orders GROUP BY ROLLUP (region, user_id)
Shorthand para sa bawat kombinasyon ng mga nakalistang key bilang grouping sets.
SELECT region, user_id, SUM(total) FROM orders GROUP BY CUBE (region, user_id)
Hinihalo ang mga plain na group key sa grouping sets sa iisang clause.
SELECT user_id, region, SUM(total) FROM orders GROUP BY user_id, GROUPING SETS ((region), ())
Pinapanatili ang unang row kada key ayon sa sort order. Extensyon ng Postgres.
SELECT DISTINCT ON (user_id) user_id, total FROM orders ORDER BY user_id, created_at DESC
Distinct at advanced
Bilang ng mga unique na non-null na value. Nagde-deduplicate muna.
SELECT COUNT(DISTINCT user_id) FROM orders
Tinatantiya ang bilang ng distinct na value na may limitadong error; para sa malalaking input.
SELECT APPROX_COUNT_DISTINCT(user_id) FROM orders
Nagdudugtong ng mga non-null na string gamit ang delimiter.
SELECT STRING_AGG(user_id::text, ',') FROM orders
Nagdudugtong ng mga non-null na string; ang pangalang MySQL para sa STRING_AGG.
SELECT GROUP_CONCAT(user_id SEPARATOR ',') FROM orders
Nagtitipon ng mga non-null na input value sa isang array.
SELECT ARRAY_AGG(total) FROM orders
Nagtitipon ng mga input row sa isang JSON array; ang anyong JSONB ay nag-iimbak ng parsed binary.
SELECT JSONB_AGG(user_id) FROM orders
TRUE kapag bawat / kahit anong non-null na input value ay true.
SELECT BOOL_AND(total > 0), BOOL_OR(total > 100) FROM orders
Standard na alias para sa BOOL_AND.
SELECT EVERY(total > 0) FROM orders
Interpolated / nearest-rank na percentile sa naka-sort na input; nangangailangan ng WITHIN GROUP.
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) FROM orders
Pinakamadalas na input value; isang ordered-set aggregate sa Postgres.
SELECT MODE() WITHIN GROUP (ORDER BY total) FROM orders
Ipinapasa ang sort order sa mga ordered-set at hypothetical-set na aggregate.
SELECT RANK(500) WITHIN GROUP (ORDER BY total) FROM orders
Inililimita ang aggregate sa mga row na pumapasa sa kundisyon.
SELECT COUNT(*) FILTER (WHERE total > 100) FROM orders
Nagsa-sort ng mga value bago idugtong o tipunin ng aggregate.
SELECT STRING_AGG(user_id::text, ',' ORDER BY user_id) FROM orders
Bumibilang ang COUNT(*) at COUNT(1) ng bawat row; nilalaktawan ng COUNT(col) ang NULL inputs.
SELECT COUNT(*), COUNT(total), COUNT(1) FROM orders
Sample standard deviation ng mga non-null na numeric value. Ibinibigay ng STDDEV_POP ang anyong population; magkakaiba ang default ng bare na pangalan kada engine.
SELECT STDDEV(total) FROM orders
Sample variance ng mga non-null na numeric value (kuwadrado ng STDDEV). Pinangangalanan ng VAR_SAMP at VAR_POP ang bawat anyo.