Использование структуры таблицы SQL для начисления баллов - PullRequest
0 голосов
/ 07 октября 2019

В настоящее время я играю в лиге фэнтези-футбола и пытаюсь использовать некоторые статистические данные, чтобы принимать взвешенные решения для своей команды.

На данный момент у меня есть таблица с некоторыми историческими данными об эффективности игрока. каждая строка таблицы является выходом одного игрока в одной игре, как показано ниже:

Player          PassingYards    PassingTDs
Tom Brady       200             5
Deshaun Watson  350             3

В моей лиге действует специальный тариф за очки, который я собираюсь сохранить в другой таблице, как показано ниже:

Metric          Points
PassingYards    0.04
PassingTDs      4

Из двух таблиц выше я стремлюсь построить представление, которое будет рассчитывать очки, набранные за каждую игру, и должно выглядеть следующим образом:

Player          Points
Tom Brady       28
Deshaun Watson  26

[Где 28 - (200* 0,04) + (5 * 4) и 26 - (350 * 0,04) + (3 * 4)]

У меня вопрос, как мне сохранить данные о тарифах в баллах? Мои данные, очевидно, имеют более 2 метрик, поэтому я бы предпочел не вводить число вручную для каждой из метрик. Я уверен, что есть простой способ сделать это, но я просто не могу решить это. Спасибо!

1 Ответ

2 голосов
/ 07 октября 2019

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

Player          Metric          Value
Tom Brady       PassingYards    200
Tom Brady       PassingTDs        5
Deshaun Watson  PassingYards    350
Deshaun Watson  PassingTDs        3

и:

Metric          Points
PassingYards    0.04
PassingTDs      4

Тогда вы можете присоединиться к таблицам и агрегировать:

select pm.player, sum(pm.value * m.points)
from playermetrics pm join
     metrics m
     on pm.metric = m.metric
group by pm.player;

На самом деле, я подозреваючто вам также нужны таблица Players и столбец MetricId в таблице metrics. Таким образом, вам не нужно повторять строки в разных таблицах - то, что опечатки могут отбросить ваши результаты.

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