您的代码中存在逻辑问题。您要知道,《HAVING》子句是用来对分组后的结果数据进行过滤操作的,因此在《HAVING》子句中直接使用MAX
函数可能无法得到您预期的结果。
如果您想找到最高的总薪酬及其对应员工人数,可以首先使用子查询找出最高的总薪酬,然后再将它与原始表进行连接,如下所示:
SELECT
e.salary * e.months as earnings,
COUNT(*) as num_employees
FROM employee e
JOIN (
SELECT MAX(salary * months) as max_earnings
FROM employee
) max_earnings_query
ON e.salary * e.months = max_earnings_query.max_earnings
GROUP BY e.salary * e.months;