MySQL подсчитайте, сколько записей сделал пользователь - PullRequest
0 голосов
/ 26 апреля 2020

Я пытаюсь подсчитать, сколько записей сделал уникальный игрок [auth]. Так что в основном я пытаюсь выбрать наименьшее время на каждой карте и подсчитать, у кого осталось больше записей.

Я получил это с большим количеством поиска в Google.

SELECT
    auth,
    map,
    MIN(time) AS Record
FROM
    bhop.playertimes
WHERE track LIKE '0'
GROUP BY
    map
)

Это успешно перечисляет все топ-карты и [автор], который сделал запись Какой самый простой способ суммировать записи [auth]?

Я бы предпочел этот тип ответа на запрос:

[auth] [records_made]

Database structure

Query result

1 Ответ

0 голосов
/ 26 апреля 2020

Я думаю, что вы хотите:

select p.auth, count(*) no_records
from bhop.playertimes p
where 
    p.track = 0
    and p.time = (
        select min(p1.time) 
        from bhop.playertimes p1 
        where p1.map = p.map and p1.track = 0
    )

Это дает вам число map с на auth, где им принадлежит минимальное время (которое, как я понимаю, является вашим определением auth сделав запись ).

Если вы используете MySQL 8.0, вы можете получить тот же результат с оконной функцией rank():

select auth, count(*) no_records
from (
    select auth, rank() over(partition by map order by time) rn
    from bhop.playertimes
    where track = 0
) p
group by auth
...