2015-05-15 2 views
1

Я пытаюсь создать систему ранжирования, используя данные в моей таблице. Он имеет 2 столбца, имя и партитуру. Один пользователь может иметь несколько баллов. Это то, что у меня есть до сих пор:Функция определения рейтинга MySQL

("SELECT name, score, FIND_IN_SET(score, (SELECT GROUP_CONCAT (score ORDER BY score DESC) FROM data)) AS rank FROM scores"); 

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

Кто-нибудь знает, как я могу это достичь?

+0

какие еще поля таблицы 'data'? имеет ли это 'имя' или' id' 'пользователя'? –

+0

Если вам нравится, рассмотрите следующий простой двухэтапный курс действий: 1. Если вы еще этого не сделали, укажите надлежащие DDL (и/или sqlfiddle), чтобы мы могли более легко воспроизвести проблему. 2. Если вы еще этого не сделали, укажите желаемый результирующий набор, соответствующий информации, представленной на шаге 1. – Strawberry

+0

поделитесь своими данными таблицы с запросом на создание – DevLakshman

ответ

0

Попробуйте

SELECT name, sum(score) from scores group by name order by sum(score) desc limit 1 

И если вы не хотите, чтобы суммировать затем использовать

SELECT name, max(score) from scores 
+0

выберите имя, максимальное (оценка) из баллов - правильный ответ на вопрос. возможно, можно добавить «группу по имени». Кто бы ни запустил это, вместо того, чтобы просто троллировать людей, оставьте комментарий о том, почему вы сделали downvote. –

-1

Вы можете использовать SELECT DISTINCT имя, оценка ...
и выберите TOP 1 и ORDER BY

0

Следующий запрос отобразит список имен в порядке наибольшего балла соответственно.

select name, max(score) as score from scores group by name order by score desc 
Смежные вопросы