dozzzzer
@dozzzzer

Группировка в PostgreSQL?

Имеется таблица:

id| country | salary
1 | sweden | 3000
2 | germany| 3900
3 | sweden | 3500
4 | sweden | 2900
5 | germany| 3300

Необходимо:
  1. получить записи с максимальными значениями salary в каждой из стран
  2. получить id этих записей


Ожидаемый рез-т:
id | country | salary
3 | sweden | 3500
2 | germany| 3900

Какой использовать запрос, чтобы добиться этого рез-та?

запрос:
SELECT id, max(salary) FROM t GROUP BY country;
возвращает ошибку:
столбец "t.id" должен фигурировать в предложении GROUP BY или использоваться в агрегатной функции
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
SELECT t.id, t.country, t.salary 
  FROM t
    INNER JOIN 
      ( SELECT country, max(salary) AS max_salary FROM t GROUP BY country ) tm
        ON t.country = tm.country AND t.salary = tm.max_salary

Проверка.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы