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;

DBFiddle Demo

以上是关于SQL Server:如何在总行数和仅包含数据的行数之间得到差异的主要内容,如果未能解决你的问题,请参考以下文章

sql server查询结果集复制出来的行数和在SSMS上的行数不一致

如何总结用户在 git repo 中添加/删除的行?

如何在特定模式中的所有表的选择列表中获取总行数和最大(时间戳)列

vb.net中怎样求DataGridView的行数和列数?

在Java中,如何通过在数据库得到的结果集得到表的列数和行数?

在 SQL Server 2005 中添加总行?