【发布时间】:2021-12-20 06:41:37
【问题描述】:
您好,我有 2 个表想要使用聚合并具有线索。你能检查我的查询吗?不工作
SELECT
registration.Staff_ID,
staff.FirstName,
staff.LastName,
(sum(registration.RegFeeAmntPaid)) AS The_Best_Seller
FROM registration,staff
WHERE registration.Staff_ID = staff.Staff_ID
GROUP BY Staff_ID
HAVING MAX(SUM(registration.RegFeeAmntPaid)) = SUM(registration.RegFeeAmntPaid);
【问题讨论】:
-
你不能这样嵌套聚合。
-
这必须是两个设置:获取每个员工的总和。然后得到最大人员总和并进行比较。您正在尝试将这两个步骤合二为一。窗口函数将对此有所帮助。您使用的是什么 DBMS? (SQL 请求应始终使用 DBMS 进行标记,以免得到不适合您的答案。)
-
我已经为你添加了 MySQL 标签。在标准 SQL 中,您可以将
HAVING子句替换为ORDER BY RANK() OVER (ORDER BY SUM(registration.RegFeeAmntPaid) DESC) FETCH FIRST ROW WITH TIES,但 MySQL 不支持FETCH子句。从 MySQL 8 开始,您可以使用RANK OVER和MAX OVER,但您需要一个子查询来评估结果。
标签: mysql sql aggregation having