SQL Server:如何在总行数和仅包含数据的行数之间得到差异
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server:如何在总行数和仅包含数据的行数之间得到差异相关的知识,希望对你有一定的参考价值。
我有一个数据表,如下所示(该表每天都有当前日期建立,但为了便于阅读,我离开了该字段)。
该表记录了他们每天进入的人和门。
表格entry_t:
id entrance entered
------------------------
1 a 0
1 b 0
1 c 0
1 d 0
2 a 1
2 b 0
2 c 0
2 d 0
3 a 0
3 b 1
3 c 1
3 d 1
我的目标是报告人数并统计未使用的入口(对人员进行分组),但仅限于他们输入(输入= 1)。
所以使用上表,我希望查询的结果是...
id count
----------
2 3
3 1
(id = 2没有使用3个入口而id = 3没有使用1)
我尝试了查询(一些在同一个表的两个实例上有内连接),我可以得到没有使用的入口,但它总是适合所有人。像这样...
id count
----------
1 4
2 3
3 1
我怎么不显示结果id = 1,因为它们根本没有输入?
谢谢,
答案
您可以使用条件聚合:
SELECT id, count(CASE WHEN entered = 0 THEN 1 END) AS cnt
FROM entrance_t
GROUP BY id
HAVING count(CASE WHEN entered = 1 THEN 1 END) > 0;
以上是关于SQL Server:如何在总行数和仅包含数据的行数之间得到差异的主要内容,如果未能解决你的问题,请参考以下文章
sql server查询结果集复制出来的行数和在SSMS上的行数不一致
如何在特定模式中的所有表的选择列表中获取总行数和最大(时间戳)列