在大学的一次考试中,有一道题;是否可以在 SQL WHERE
子句中使用聚合函数。
我一直认为这是不可能的,我也找不到任何可能的例子。但是我的回答被标记为错误,现在我想知道在哪些情况下可以在 WHERE
中使用聚合函数。此外,如果不可能的话,最好能获得描述它的规范的链接。
原文由 n3on 发布,翻译遵循 CC BY-SA 4.0 许可协议
在大学的一次考试中,有一道题;是否可以在 SQL WHERE
子句中使用聚合函数。
我一直认为这是不可能的,我也找不到任何可能的例子。但是我的回答被标记为错误,现在我想知道在哪些情况下可以在 WHERE
中使用聚合函数。此外,如果不可能的话,最好能获得描述它的规范的链接。
原文由 n3on 发布,翻译遵循 CC BY-SA 4.0 许可协议
HAVING 就像带有聚合函数的 WHERE,或者您可以使用子查询。
select EmployeeId, sum(amount)
from Sales
group by Employee
having sum(amount) > 20000
或者
select EmployeeId, sum(amount)
from Sales
group by Employee
where EmployeeId in (
select max(EmployeeId) from Employees)
原文由 Jason Goemaat 发布,翻译遵循 CC BY-SA 3.0 许可协议
您还没有提到 DBMS。假设您使用的是 MS SQL-Server,我发现了一条不言自明的 T-SQL 错误消息:
http://www.sql-server-performance.com/
还有一个可以在子查询中使用的示例。
为有 5 个或更多订单的人显示所有客户和最小订单(其他人为 NULL):
更新。
以上在 SQL-Server 和 MySQL 中运行,但它没有返回我预期的结果。下一个更接近。我想这与
customerid
字段有关,GROUPed BY 并在查询-子查询连接中使用在第一种情况下是外部表的 PRIMARY KEY,而在第二种情况下则不是。显示有 5 个或更多订单的所有客户 ID 和订单数量(其他订单为 NULL):