能否按ID对元组分组并获取满足COUNT计数条件的对应元组?
解决方案
你可以使用标准SQL的条件判断配合COUNT函数实现需求,兼容所有主流关系型数据库的写法如下:
SELECT id, -- 统计result大于50的记录数 COUNT(CASE WHEN result > 50 THEN 1 END) AS count_greater_than_50, -- 统计result非空的总记录数 COUNT(result) AS total_not_null_result FROM TableName GROUP BY id;
逻辑说明
COUNT(字段名)统计时会自动忽略该字段为NULL的记录,因此直接使用COUNT(result)就能得到每个id下result为非空值的总记录数,无需额外过滤条件。- 统计满足阈值的记录数利用了COUNT忽略NULL的特性:
CASE WHEN result >50 THEN 1 END只会在满足条件时返回有效值,不满足时返回NULL,COUNT统计时会自动跳过这些NULL值,最终得到的就是符合条件的记录数量。
可选简化写法(仅兼容部分数据库)
如果使用MySQL、PostgreSQL这类支持语法糖的数据库,可以用更简短的写法实现相同效果:
-- MySQL 写法 SELECT id, SUM(result > 50) AS count_greater_than_50, COUNT(result) AS total_not_null_result FROM TableName GROUP BY id;
内容的提问来源于stack exchange,提问作者Maffa
相关产品推荐
相关产品推荐

