sql - WHERE 子句或 HAVING 中的 COUNT?

标签 sql sql-server-2008-r2

这基本上就是我想要实现的目标;

SELECT 
COUNT(DISTINCT No) 
FROM 
Table 
WHERE 
(Type = 1 AND COUNT(DISTINCT No) > Num) 
OR (Type = 2 AND COUNT(DISTINCT No) > Num) 
GROUP BY
Week

实现这一目标的最佳方法是什么?

谢谢

最佳答案

任何聚合比较都需要进入 Group By 之后的 HAVING 子句。请记住,根据非聚合条件的放置位置,您可能会得到不同的结果,因为您将通过 WHERE 聚合包含/排除的内容。

SELECT COUNT(DISTINCT No) 
FROM Table 
WHERE Type = 1
GROUP BY Week
HAVING COUNT(DISTINCT No) > Num

可能与

不同
SELECT COUNT(DISTINCT No) 
FROM Table 
GROUP BY Week
HAVING COUNT(DISTINCT No) > Num
AND Type = 1

关于sql - WHERE 子句或 HAVING 中的 COUNT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16478368/

相关文章:

SQL:如何获得足够的事件天数,以便我至少有 50 个事件

sql-server - 使 SQL Server 数据库联机

sql-server-2008-r2 - 无法启动该服务,原因可能是它已被禁用或没有与之关联的已启用设备

python - 从数据库中获取多个值

mysql - SQL查询检查之前和之后检查获取最近的日期

php - 没有 GROUP BY 子句时 SQL 计数返回错误

c# - 从 Windows Mobile 6.0 连接到 SQL Server 2008 时出现异常

sql-server - 使用 SQL Server 2008 R2 从日期时间获取日期名称

sql-server - SQL Server : Could not find type in the assembly

mysql - sqlite 触发器对整个数据库起作用还是仅对更改的行起作用