У меня следующие три таблицы.SQL-запрос для суммирования «заработанных» значений по отношению к сумме всех значений
Player:
-------
Id, Name
Achievement:
------------
Id, Title, Points
EarnedAchievement:
------------------
Id, PlayerId, AchievementId, EarnedDate
Я хочу, чтобы выбрать имя каждого игрока, свои заработанные очки достижений, и их заработанные очки достижений по отношению к общей сумме очки достижений можно заработать (другие слова, прогресс, заработанный этим конкретным игроком (earnedPoints/possiblePoints)).
Это то, что я до сих пор:
select p.Id, p.Name, sum(a.Points) as AP from Player as p
inner join EarnedAchievement as ea on ea.PlayerId = p.Id
inner join Achievement as a on ea.AchievementId = a.Id
group by p.Id, p.Name
order by p.Name
Это дает мне следующее:
1, Barack Obama, 140
2, Bruce Willis, 125
etc.
Я хочу четвертый столбец, который представляет собой прогресс, заработанный игрок. (Всего очков достижения, которые можно заработать, составляет 210, поэтому их столбцы прогресса должны составлять 66% и 59% соответственно).
Любые указатели были бы значительно оценены.
EDIT:
Пожалуйста, обратите внимание, что сумма всех очков достижений не является постоянной, так что число 210 будет увеличиваться при добавлении новых достижений.
Всего достижений всегда 210? –
Является ли 210 константой или получена где-то в базе данных? –
добавьте другое производное поле к выбору с помощью (sum (a.points)/210) * 100 – brumScouse