MySQL单查询统计一列中值为1及大于1的出现次数
实现方法
可以通过条件聚合在单条SQL中完成统计,核心思路是用CASE WHEN配合聚合函数分别计算符合条件的行数。
假设你的表名为your_table,目标列名为column(因column是SQL关键字,需用反引号包裹),查询语句如下:
SELECT COUNT(CASE WHEN `column` = 1 THEN 1 END) AS one, COUNT(CASE WHEN `column` > 1 THEN 1 END) AS greater_than_one FROM your_table;
说明
CASE WHENcolumn= 1 THEN 1 END:当列值等于1时返回1,否则返回NULL;COUNT会忽略NULL值,因此最终统计的就是值为1的行数。- 同理,
CASE WHENcolumn> 1 THEN 1 END统计值大于1的行数。 - 若你的SQL方言支持,也可以用
SUM(CASE WHENcolumn= 1 THEN 1 ELSE 0 END)替代COUNT,效果完全一致。
用你提供的样本数据执行该查询,会得到如下结果:
| one | greater_than_one |
|---|---|
| 3 | 4 |
内容的提问来源于stack exchange,提问作者Abdul Raheem Dumrai
相关产品推荐
相关产品推荐

