我不知道为什么我的查询不起作用。错误显示聚合函数必须使用分组依据。我添加了“按MAX(薪水)分组”,这不能解决问题。请帮忙,谢谢!
表格:
查询
SELECT Name, MAX(Salary)
FROM PRACTICE.SALARY
WHERE Salary
NOT IN (SELECT MAX(Salary) FROM PRACTICE.SALARY);
答案 0 :(得分:1)
使用聚合函数时,您需要在group by
SELECT Name, MAX(Salary)
FROM PRACTICE.SALARY
WHERE Salary
NOT IN (SELECT MAX(Salary) FROM PRACTICE.SALARY)
GROUP BY Name
但是,如果您只想获得第二个高度SALARY
,则查询将得到错误的结果,因为您对每个group by
的{{1}}并获得NAME
的所有薪水每个MAX(Salary)
而不是整个表格中的最大值。
我认为您可以使用此查询来获得期望的结果。
模式(MySQL v5.7)
NAME
查询#1
CREATE TABLE T(
Name VARCHAR(50),
Salary int
);
INSERT INTO T VALUES ('Lucy',2008);
INSERT INTO T VALUES ('PETER',3000);
INSERT INTO T VALUES ('K',1900);
INSERT INTO T VALUES ('TOM',2015);
INSERT INTO T VALUES ('MARK',3001);