Получите рейтинг на основе рейтинга пользователей laravel mysql - PullRequest
0 голосов
/ 28 февраля 2020

Я выполнил следующий запрос для получения верхнего балла пользователей за текущую неделю и получил следующий результат из базы данных

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();

Приведенный выше запрос дает мне только пользователей с высокими показателями на текущей неделе Нужно также получить свой ранг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...