पहले आपको प्रत्येक खिलाड़ी का कुल स्कोर प्राप्त करना होगा और फिर players
. से जुड़ना होगा .
फिर प्रत्येक समूह के शीर्ष खिलाड़ी को प्राप्त करने के लिए FIRST_VALUE() विंडो फ़ंक्शन का उपयोग करें:
SELECT DISTINCT p.group_id,
FIRST_VALUE(p.player_id) OVER (PARTITION BY p.group_id ORDER BY m.score DESC) winner_id
FROM players p
LEFT JOIN (
SELECT player, SUM(score) score
FROM (
SELECT match_id, first_player player, first_score score FROM matches
UNION ALL
SELECT match_id, second_player, second_score FROM matches
) t
GROUP BY player
) m ON m.player = p.player_id
डेमो देखें ।