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

如何在PostgreSQL中对同一列按不同条件统计并输出为多列

合并IP对应的up_score 0和1的统计查询

你可以通过条件聚合实现一次查询得到每个IP对应的up_score为1和0的数量,具体SQL语句如下:

SELECT 
    ip,
    SUM(CASE WHEN up_score = 1 THEN 1 ELSE 0 END) AS count_1,
    SUM(CASE WHEN up_score = 0 THEN 1 ELSE 0 END) AS count_0
FROM net_score
GROUP BY ip
ORDER BY ip;

原理说明

  • 利用CASE WHEN对每条记录的up_score进行判断:符合目标值则返回1,否则返回0,再通过SUM函数累加得到对应计数。
  • 这种写法会保留所有出现过的IP,即使某个IP没有up_score=0或up_score=1的记录,对应的计数会自动显示为0,完全匹配你期望的结果格式。
  • 相比两次单独查询,一次聚合查询只需要扫描表一次,效率更高。

你也可以用COUNT函数实现相同效果:

SELECT 
    ip,
    COUNT(CASE WHEN up_score = 1 THEN 1 END) AS count_1,
    COUNT(CASE WHEN up_score = 0 THEN 1 END) AS count_0
FROM net_score
GROUP BY ip
ORDER BY ip;

COUNT函数会忽略NULL值,当CASE条件不满足时返回NULL,因此只会统计符合条件的记录数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:40:50