查找第二高的查询不起作用

时间:2018-11-09 00:41:16

标签: mysql sql group-by

我不知道为什么我的查询不起作用。错误显示聚合函数必须使用分组依据。我添加了“按MAX(薪水)分组”,这不能解决问题。请帮忙,谢谢!

表格:

enter image description here

查询

SELECT Name, MAX(Salary)
FROM  PRACTICE.SALARY
WHERE Salary 
NOT IN (SELECT MAX(Salary) FROM  PRACTICE.SALARY);

1 个答案:

答案 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);

View on DB Fiddle