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

如何统计tasks表中各tasks_status状态记录数(含done单独统计)

解决tasks表各状态统计的SQL查询方案

1. 统计所有状态的记录数(含done)

使用GROUP BY按tasks_status分组,结合COUNT()函数可直接获取每种状态的记录数:

SELECT tasks_status, COUNT(id) AS status_count
FROM tasks
GROUP BY tasks_status;

该查询会返回对应四种状态的记录数结果行,若部分状态无数据则不会返回对应行。如果需要强制显示所有四种状态(即使数量为0),可通过子表生成所有状态后左连接实现:

SELECT s.status_name, COUNT(t.id) AS status_count
FROM (
    SELECT 'done' AS status_name UNION ALL
    SELECT 'pending' UNION ALL
    SELECT 'forwarded' UNION ALL
    SELECT 'cancelled'
) s
LEFT JOIN tasks t ON s.status_name = t.tasks_status
GROUP BY s.status_name;

2. 单独统计done状态的总数

通过WHERE过滤目标状态,再用COUNT()计算总数:

SELECT COUNT(id) AS done_count
FROM tasks
WHERE tasks_status = 'done';

3. 同查询同时获取done总数与全状态统计

若需要在一个结果集中同时展示done的总数量和所有状态的明细统计,可使用条件聚合或子查询:

方式一:条件聚合+ROLLUP

SELECT
    COUNT(CASE WHEN tasks_status = 'done' THEN 1 END) AS total_done,
    tasks_status,
    COUNT(id) AS status_count
FROM tasks
GROUP BY tasks_status WITH ROLLUP;

WITH ROLLUP会额外生成一行总计数据,每行都会显示done状态的总数量。

方式二:子查询关联

SELECT
    (SELECT COUNT(id) FROM tasks WHERE tasks_status = 'done') AS total_done,
    tasks_status,
    COUNT(id) AS status_count
FROM tasks
GROUP BY tasks_status;

内容的提问来源于stack exchange,提问作者Macy Creed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:20:26