Skip to content

Mga aggregate function ng SQL ipinaliwanag

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
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.SELECT VARIANCE(total) FROM orders