You можете попробовать себя присоединиться, как это fiddle:
Просто, чтобы расширить некоторые другие способы, вы можете использовать это, я обновил оригинальную скрипту до this. Кроме того, я добавил дополнительный datapoint для пользователя 4, чтобы показать, что произошло с дубликатами.
- Чтобы получить данные для одного пользователя (оригинал запроса):
SELECT c1.*
FROM completedscenarios c1
LEFT JOIN completedscenarios c2
ON c1.user_id = c2.user_id
AND c1.game = c2.game
AND c1.CompletePercentage < c2.completePercentage
WHERE c1.user_id = 1 and c2.user_id is null;
- Чтобы получить всех пользователей и их лучшие результаты в игре
SELECT c1.user_id, c1.game, c1.CompletePercentage
FROM completedscenarios c1
LEFT JOIN completedscenarios c2 ON c1.user_id = c2.user_id
AND c1.game = c2.game
AND c1.CompletePercentage < c2.completePercentage
WHERE c2.user_id is null
ORDER BY c1.user_id, c1.CompletePercentage;
- Чтобы получить все игры и самые высокие проценты независимо от того, что Пользователь
SELECT c1.game, c1.user_id, c1.CompletePercentage
FROM completedscenarios c1
LEFT JOIN completedscenarios c2 ON c1.game = c2.game
AND c1.CompletePercentage < c2.completePercentage
WHERE c2.game is null
ORDER BY c1.game, c1.CompletePercentage;
- Чтобы получить пользователей и их наилучшую общую игру
SELECT c1.user_id, c1.game, c1.CompletePercentage
FROM completedscenarios c1
LEFT JOIN completedscenarios c2 ON c1.user_id = c2.user_id
AND c1.CompletePercentage < c2.completePercentage
WHERE c2.user_id is null
ORDER BY c1.user_id, c1.CompletePercentage;
USER_ID | GAME | COMPLETEPERCENTAGE
------------------------------------
1 | name1 | 90
1 | name4 | 80
1 | name3 | 70
USER_ID | GAME | COMPLETEPERCENTAGE
------------------------------------
1 | name3 | 70
1 | name4 | 80
1 | name1 | 90
2 | name2 | 70
3 | name4 | 100
4 | name1 | 50
4 | name2 | 70
GAME | USER_ID | COMPLETEPERCENTAGE
------------------------------------
name1 | 1 | 90
name2 | 2 | 70
name2 | 4 | 70
name3 | 1 | 70
name4 | 3 | 100
USER_ID | GAME | COMPLETEPERCENTAGE
------------------------------------
1 | name1 | 90
2 | name2 | 70
3 | name4 | 100
4 | name2 | 70
Вы можете использовать 'LIMIT'. – Vucko