У меня есть таблица результатов, в которой есть результаты игроков, и я хочу выбрать уникальные записи для каждого игрока с наибольшим счетом.
Вот таблица:
id | player_id | score | ...
1 | 1 | 10 | ...
2 | 2 | 21 | ...
3 | 3 | 9 | ...
4 | 1 | 30 | ...
5 | 3 | 2 | ...
Ожидаемый результат:
id | player_id | score | ...
2 | 2 | 21 | ...
3 | 3 | 9 | ...
4 | 1 | 30 | ...
Я могу добиться этого с помощью чистого SQL следующим образом:
SELECT *
FROM player_score ps
WHERE ps.score =
(
SELECT max(ps2.score)
FROM player_score ps2
WHERE ps2.player_id = ps.player_id
)
Можете ли вы сказать мне, как добиться того же запроса с запросом dsl? Я нашел несколько решений с помощью JPASubQuery, но этот класс у меня не работает (моя IDE не может разрешить этот класс). Я использую querydsl 4.x. Заранее спасибо.