You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 14按多字段分组统计总数及子字段值计数

PostgreSQL 14 实现分组后多字段值的计数统计

直接用条件聚合就能实现需求,基于你已有的分组SQL,添加针对各字段的条件统计即可,两种写法都能达到效果:

写法一(使用COUNT+CASE)

SELECT 
    org,
    product,
    release_date,
    COUNT(1) AS total,
    -- 统计date_avail为'no'的数量
    COUNT(CASE WHEN date_avail = 'no' THEN 1 END) AS number_of_no,
    -- 统计date_avail为'yes'的数量
    COUNT(CASE WHEN date_avail = 'yes' THEN 1 END) AS number_of_yes,
    -- 统计status为'green'的数量
    COUNT(CASE WHEN status = 'green' THEN 1 END) AS number_of_green,
    -- 统计status为'yellow'的数量
    COUNT(CASE WHEN status = 'yellow' THEN 1 END) AS number_of_yellow
FROM test
GROUP BY org, product, release_date;

写法二(使用SUM+CASE)

SELECT 
    org,
    product,
    release_date,
    COUNT(1) AS total,
    SUM(CASE WHEN date_avail = 'no' THEN 1 ELSE 0 END) AS number_of_no,
    SUM(CASE WHEN date_avail = 'yes' THEN 1 ELSE 0 END) AS number_of_yes,
    SUM(CASE WHEN status = 'green' THEN 1 ELSE 0 END) AS number_of_green,
    SUM(CASE WHEN status = 'yellow' THEN 1 ELSE 0 END) AS number_of_yellow
FROM test
GROUP BY org, product, release_date;

原理说明

两种写法核心都是条件聚合:在GROUP BY分组的基础上,对每条记录判断是否符合目标值,符合则计入统计,不符合则忽略(COUNT写法)或记为0(SUM写法),最终得到分组内各字段不同值的数量。

查询结果

orgproductrelease_datetotalnumber_of_nonumber_of_yesnumber_of_greennumber_of_yellow
abpm2022-0743122
bppp2022-0822020

内容的提问来源于stack exchange,提问作者moth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 01:07:19