Я пытаюсь создать систему ранжирования в базе данных mysql.Группы и ряды строк в Mysql
Я нашел несколько руководств по ранжированию и пунктам здесь, в StackOverflow о ранжировании отдельных строк друг против друга.
Однако проблема заключается в том, что мне нужно группировать строки по столбцу идентификатора пользователя, добавлять значения ко второму столбцу, сгруппированному по идентификатору пользователя, а затем ранжировать их по отношению к другим группам другого идентификатора пользователя.
Вот пример таблицы я использую:
user_id km_skied date_entered
1 34 2010-08-19
3 2 2010-08-23
1 3 2010-08-13
4 23 2010-08-01
3 5 2010-08-02
Результат распечатке будет рангом:
Лыжник Ранг:
Rank User ID Total KM 1 1 37 2 4 23 3 3 7
Кроме того, мне было интересно, как Я нахожу ранг для конкретного пользователя. Смысл, если я знаю, что такое идентификатор пользователя, могу ли я дать им только их рейтинг? Как говорят
«Ваш ранг: 2 из 345»
Это является второй частью этого.
Кто-нибудь знает, как это сделать? Спасибо! Troy
Для этого требуется ЗАКАЗ BY в подзапросе, что не имеет смысла так как отношения должны быть множествами (неупорядоченными по определению). Но, к сожалению, я не знаю другого способа с MySQL. –
Я нашел решение для первой части, ранжируя по группе, используя:
"SELECT SUM(track_length) as usertracklength, username, MAX(track_create_time) as lasttrack, count(DISTINCT track_create_time) as totaldays FROM mv_user_tracks GROUP BY username ORDER BY usertracklength DESC";
, затем используя PHP, чтобы распечатать результаты в упорядоченном списке. Мне нужно найти ранг для физических лиц, поэтому я могу распечатать что-то вроде «Ваш ранг: 2 из 100». – Troy