MySQL: как отследить общее количество убийств игрока за всю его карьеру - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть структура таблицы с 4 основными столбцами:

  1. match_id

  2. дата

  3. player_id

  4. убийств (игрока в текущей игре)

Таблица будет содержать данные для многих различных player_ids и то, что я хочуподсчитать - это количество убийств, совершенных каждым игроком в общей сложности (из всех матчей, в которых он когда-либо играл в данный момент времени) после каждой игры, упорядоченной по дате asc.

Так, например, если он получит 20 убийств в своем первом матче, его карьера составит 20. Если он получит 15 убийств в следующем матче, его убийство в карьере будет 35. Я хотел бы запрос, который показывает каждое из этихобщая карьера убивает после каждого матча.

Ранее я решил эту проблему, просматривая все строки в python и отслеживая все убийства игроков, но я предполагаю, что есть гораздо лучший способ для этого.

1 Ответ

0 голосов
/ 23 февраля 2019

Ну, этот тип запроса может быть легко достигнут с помощью функции Windows , которая наконец-то появилась в MySQL 8.0:

select 
  player_id , 
  match_id , 
  date , 
  kills ,
  sum(kills) over (partition by player_id order by date asc , match_id asc) as career_kills
from `match`;

Здесь мы полагаемся на настройку по умолчанию для оконной рамы, когда order by присутствует в over, что эквивалентно RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW

DB Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...