Задать вопрос
YardalGedal
@YardalGedal
yeah boy

Как получить позицию пользователя MySql?

Использую такой код для формирования списка самых активных пользователей:
SELECT user_id, COUNT(*) as user_commands FROM `log` GROUP BY user_id ORDER BY user_commands DESC


Например, мне известен конкретный user_id - каким способом можно узнать его позицию в этом списке?
  • Вопрос задан
  • 289 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
qonand
@qonand
Software Engineer
В общем случае можно так:
SET @number := 0;
SELECT
	rating.*
FROM
	(
		SELECT
			(@number := @number + 1) AS number,
			user_id,
			COUNT(*) AS user_commands
		FROM
			`log`
		GROUP BY
			user_id
		ORDER BY
			user_commands DESC
	) AS rating
WHERE
	rating.user_id = 2

Но стоит понимать что такие запросы не рациональны, и при больших нагрузках/данных не годятся, поэтому я бы рекомендовал сделать отдельную таблицу агрегирующую в себя рейтинг пользователей
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы