@ch1ps01

Как сделать топ баллов?

В базе данных в таблице юзеров есть столб - баллы, каким способом лучше всего сделать топ-10 юзеров, сортируя их по баллам и как получить информацию о том, на каком месте юзер по баллам? Всю эту информацию надо вывести в чат через бота
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
InternetMaster
@InternetMaster
Интернет
Нужно взять топ-10 пользователей с самыми высокими баллами, для этого SQLite запрос:
SELECT username FROM users ORDER BY balli DESC LIMIT 10
. Этим запросом получишь первые 10 пользователей по баллам.

Как взять на каком месте юзер по баллам? Чтобы каждый раз не растрачивать ресурсы вычислительной техники, лучше всего вести отдельную таблицу с такими данными, обновляя её всякий раз, когда порядок лидерства будет изменяться.
Если этого не хочется (или проект уже запущен, и нельзя изменить) нужно каждый раз брать всю таблицу пользователей с сортировкой по максимальному ID (тот же запрос из первой части ответа, только лимит порежь) , и прогонять по циклу for, пока не найдешь нужного пользователя.
Представить только, что если там не 10, не 100 а 100000 пользователей, вычислительная техника сойдет с ума, еще если представить 20-30 таких запросов одновременно.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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