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

如何在同一SQL查询中统计不同status的文档上传与剩余数量?

如何在同一SQL查询中同时统计两种状态的文档数量?

样本表

owner        file_type       status
John            doc_1           1  
John            doc_2           1   
John            doc_3           0
Mike            doc_1           1
Mike            doc_2           0
Mike            doc_3           1   
Dona            doc_1           0   
Dona            doc_2           0
Dona            doc_3           0  
Jane            doc_1           1   
Jane            doc_2           1
Jane            doc_3           1

期望查询结果

owner        uploaded       remaining
John            2               1  
Mike            2               1  
Dona            0               3   
Jane            3               0

尝试的代码

SELECT owner AS 'Name', COUNT(file_type) AS 'uploaded'
FROM sampleTable
WHERE [status] = 1
GROUP BY owner

解决方案

你原来的查询用WHERE [status] = 1过滤掉了所有状态不为1的行,因此无法统计剩余文档数量。可以用条件聚合的方式,在分组后分别统计两种状态的数量:

通用SQL写法(适用于所有数据库)

SELECT 
    owner,
    SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS uploaded,
    SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) AS remaining
FROM sampleTable
GROUP BY owner

MySQL简化写法

如果使用MySQL,利用布尔值在聚合时会被转为0/1的特性,可简化为:

SELECT 
    owner,
    SUM(status = 1) AS uploaded,
    SUM(status = 0) AS remaining
FROM sampleTable
GROUP BY owner

原理:通过CASE表达式(或MySQL的布尔判断)对每一行的status进行判断,符合条件则返回1,否则返回0,再用SUM函数累加得到对应状态的文档总数,以此在同一查询中同时统计已上传和剩余的文档数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:38:30