- Вроде бы можно уже сделать на текущих данных, по таблице пробегов юзеров по словарю.
- Самый простой вариант:
- Просуммировать все пробеги всех юзеров по словарю.
- Сгруппировать по словарям.
- Отсортировать по уменьшению суммарного пробега.
- Ограничить по условным топ-500 словарям.
- Другой вариант — по количеству использующих юзеров:
- Выбрать число различных юзеров [с минимальным пробегом по словарю], у которых есть пробег по словарю.
- Отсортировать по убыванию числа юезров.
- Ограничить по условным топ-500 словарям.
Запрос для первой выборки:
select
pvs.vocabulary_code,
pvs.vocabulary_name,
sum(pvs.races_count) as total_vocabulary_races_count
from player_vocabulary_stats pvs
-- where pvs.vocabulary_code = 'normal' -- только по одному словарю
group by pvs.vocabulary_code, pvs.vocabulary_name
having total_vocabulary_races_count > 1000 -- ограничение суммарного пробега всех игроков по словарю
order by total_vocabulary_races_count desc
После обсуждения:
- Лучше делать оба топа.
- В первый топ нужно добавить "число учтенных игроков с пробегом по словарю" и "среднее число заездов по словарю на человека".