如何使用SELECT COUNT按不同条件统计单表中多类数据
统计数据表中的试次、成功和失败次数
原数据表(假设表名为trials)
| id | status | date |
|---|---|---|
| 1 | success | 2-Mar-25 |
| 1 | failed | 4-Apr-25 |
| 2 | success | 1-May-25 |
| 3 | success | 22-May-25 |
| 2 | NULL | 12-Jul-25 |
| 4 | NULL | 15-Jul-25 |
需求统计结果
| total_trial | success | failed |
|---|---|---|
| 6 | 3 | 1 |
实现SQL语句
通过聚合函数结合条件判断可直接查询得到目标结果,以下两种写法均有效:
写法一:SUM + CASE 组合
SELECT COUNT(*) AS total_trial, SUM(CASE WHEN status = 'success' THEN 1 ELSE 0 END) AS success, SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END) AS failed FROM trials;
写法二:COUNT + CASE 组合
SELECT COUNT(*) AS total_trial, COUNT(CASE WHEN status = 'success' THEN 1 END) AS success, COUNT(CASE WHEN status = 'failed' THEN 1 END) AS failed FROM trials;
语句说明
COUNT(*):统计表内所有行数,对应总试次6次;- 针对
success和failed字段:- 写法一中,CASE语句匹配到对应状态时返回1,否则返回0,SUM求和后得到对应状态的次数;
- 写法二中,CASE语句匹配到对应状态时返回1,否则返回NULL,COUNT会自动忽略NULL值,因此仅统计符合条件的行数。
内容的提问来源于stack exchange,提问作者Ray
相关产品推荐
相关产品推荐

