обратите внимание, что индивидуальный ответ будет здесь уместен, поскольку у вас уже есть окончательный результат в таблице GameResult.
select e.Age, max(gr.Score) as Score
from Entry e
inner join GameResult gr on(gr.EntryID=e.EntryID)
group by e.Age
, затем повторите то же самое для пола и штата.
edit: хорошо, я не уверен, что я следую вашему высокоуровневому дизайну здесь, но что угодно ... Вы должны сгруппировать свои результаты сначала по идентификатору записи, а затем по возрасту / полу / штату.Дополнительный уровень сложности, но в остальном точно такая же задача.
with GameResultScore as (
select EntryID, sum(Score) as Score
from GameResult
group by EntryID
),
QuestionResultScore as (
select EntryID, count(*) CorrectAnswers
from QuestionResult
where Correct=1
group by EntryID
)
select e.Age, max(isnull(grs.Score,0)+isnull(qrs.CorrectAnswers,0) * QuestionScore) as Score
from Entry e
left join GameResultScore grs on(grs.EntryID=e.EntryID)
left join QuestionResultScore qrs on(qrs.EntryID=e.EntryID)
group by e.Age