Предположительно, страна назначается игроку, а не ответу. Если это так, вам не нужно внешнее соединение (и уж точно не то, которое начинается с responses
):
SELECT p.Country, r.AnswersID, COUNT(*) AS TTL
FROM Responses JOIN
Players p
ON p.PlayersID = r.PlayersID
GROUP BY p.Country, r.AnswersID
Затем вы можете использовать оконные функции, чтобы получить наибольшее общее количество по стране. Используйте rank()
, чтобы получить все топовые ответы при наличии связей; используйте row_number()
, чтобы получить только одну строку:
SELECT Country, AnswersID, TTL
FROM (SELECT p.Country, r.AnswersID, COUNT(*) AS TTL,
RANK() OVER (PARTITION BY p.Country ORDER BY COUNT(*) DESC) as seqnum
FROM Responses r JOIN
Players p
ON p.PlayersID = r.PlayersID
GROUP BY p.Country, r.AnswersID
) c
WHERE seqnum = 1;
В статистике это наиболее распространенное значение называется mode .