Когда вы используете статистическую функцию, вам нужно добавить неагрегированные столбцы в 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
для каждого NAME
и получите MAX(Salary)
вместо каждого NAME
будет получать каждую зарплату макс. всей таблицы.
Я думаю, что вы можете использовать этот запрос, чтобы получить ожидаемый результат.
Схема (MySQL v5.7)
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);
Запрос № 1
SELECT Name, Salary
FROM PRACTICE.SALARY
WHERE Salary <> (SELECT MAX(Salary) FROM PRACTICE.SALARY)
ORDER BY Salary DESC
LIMIT 1;
| Name | Salary |
| ----- | ------ |
| PETER | 3000 |
Просмотр на БД Fiddle