Я выполнил следующий запрос для получения верхнего балла пользователей за текущую неделю и получил следующий результат из базы данных
SELECT u.id
, u.firstName
, u.lastName
, MAX(s.score) total_score
FROM users u
JOIN game_scores s
ON s.user_id = u.id
WHERE s.created_at between '2020-02-23 00:00:00' AND '2020-02-28 09:10:50'
GROUP
BY u.id
ORDER
BY total_score DESC
, u.firstName ASC
id firstName lastName total_score
19 Cat Rat 80
33 Rose Jack 80
43 Stuart Little 73
Я хочу получить ранг в порядке возрастания имени пользователя, как показано ниже:
id firstName lastName total_score rank
19 Cat Rat 80 1
33 Rose Jack 80 2
43 Stuart Little 73 3
Я использую его в Laravel, как показано ниже, но я не получаю ранг, как указано выше
$users = DB::table('users')
->join('game_scores', 'users.id', '=', 'game_scores.user_id')
->select('users.ids', 'users.firstName', 'users.lastName', DB::raw('MAX(game_scores.score) as total_score'))
->whereBetween('game_scores.created_at',[$start_date, date('Y-m-d h:i:s')])
->groupBy('users.id', 'users.firstName', 'users.lastName')
->orderBy('total_score', 'desc')
->get();
Приведенный выше запрос дает мне только пользователей с высокими показателями на текущей неделе Нужно также получить свой ранг.