Задавайте вопросы, мы ответим
Вы не зашли.
Приветствую, односельчане
Помогите, пожалуйста, решить задачу.
Имеется табличка sales такого рода
user_id — идентификатор пользователя
amount — кол-во проданных товаров
Требуется сделать рейтинг юзеров по кол-ву продаж.
Иначе говоря, на основании значений amount
определить занимаемую позицию user_id в рейтинге.
Насколько я понял, моим потребностям удовлетворяют
функции RANK и DENSE_RANK, но их нет в MySQL.
Где-то в инете отрыл такой способ:
Неактивен
1) Как логику RANK и DENSE_RANK возможно реализовать в MySQL?
Можно поподробней, как рассчитывается RANK для юзеров с одинаковым SUM(amount) и что такое DENSE_RANK?
2) Реально ли сделать запрос, который по заданному user_id вернет его rank, не прибегая к выборке всех юзеров из таблицы?
Ну, например, вот так можно:
Неактивен
LazY написал:
Можно поподробней, как рассчитывается RANK для юзеров с одинаковым SUM(amount) и что такое DENSE_RANK?
Например есть у нас упорядоченные значения amount: 10, 9, 9, 9, 8, 7, 7, 6, 5, 4
RANK рассчитывается соответственно: 1, 2, 2, 2, 5, 6, 6, 8, 9, 10
DENSE_RANK рассчитывается соответственно: 1, 2, 2, 2, 3, 4, 4, 5, 6, 7
Про RANK и DENSE_RANK можно здесь почитать.
Отредактированно dreamcutter (12.10.2011 01:47:30)
Неактивен
Вы наверное имели ввиду что-то вроде этого, да?
Неактивен