sql同一张表统计数据生成多个统计列

filter (postgresql 支持)

1.统计行数

select 分组字段1, 分组字段2, 分组字段3, 

    count(*) as 统计所有满足条件数据行数,

    count(*) FILTER ( WHERE 条件1 ) AS 统计满足条件1的数据行数,

    count(*) FILTER ( WHERE 条件2 ) AS 统计满足条件2的数据行数,

    count(*) FILTER ( WHERE 条件3 ) AS 统计满足条件3的数据行数,

    count(*) FILTER ( WHERE 条件4 ) AS 统计满足条件4的数据行数,
    ...

    from 表

    group by 分组字段1, 分组字段2, 分组字段3

2.求和(类比其他计算)

select 分组字段1, 分组字段2, 分组字段3, 

    sum(计算字段) as 统计所有满足条件的数据计算结果,

    sum(计算字段) FILTER ( WHERE 条件1 ) AS 统计满足条件1的数据计算结果,

    count(计算字段) FILTER ( WHERE 条件2 ) AS 统计满足条件2的数据计算结果,

    count(计算字段) FILTER ( WHERE 条件3 ) AS 统计满足条件3的数据计算结果,

    count(计算字段) FILTER ( WHERE 条件4 ) AS 统计满足条件4的数据计算结果,
    ...

    from 表

    group by 分组字段1, 分组字段2, 分组字段3

case when 

1. 统计行数

select 分组字段1, 分组字段2, 分组字段3, 
	count(*) as 统计所有数据,
	sum(case when 行数统计条件1 then 1 else 0 end) professor_num,
    sum(case when 行数统计条件2 then 1 else 0 end) senior_num,
    sum(case when 行数统计条件3 then 1 else 0 end) engineer_num,
    sum(case when 行数统计条件4 then 1 else 0 end) assistant_num,
    ...
from 表
group by 分组字段1, 分组字段2, 分组字段3

2.求和(类比其他计算)

select 分组字段1, 分组字段2, 分组字段3, 

    sum(计算字段) as 统计所有满足条件的数据计算结果,

    sum(case when 条件1 then 字段1或自定义值1 else 0 end) AS 统计满足条件1的数据计算结果,

    sum(case when 条件1 then 字段2或自定义值2 else 0 end) AS 统计满足条件2的数据计算结果,

    sum(case when 条件1 then 字段3或自定义值3 else 0 end) AS 统计满足条件3的数据计算结果,

    sum(case when 条件1 then 字段4或自定义值4 else 0 end) AS 统计满足条件4的数据计算结果,
    ...

    from 表

    group by 分组字段1, 分组字段2, 分组字段3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

day day day ...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值