複数の候補者と投票の選挙結果の表があります。各投票でどの候補者が最も多くの票を獲得したかを判断する必要があります。
テーブル内のデータのサンプルを次に示します。
PollID NomineeID 投票 1 1 108 1 2 145 1 3 4 2 1 10 2 2 41 2 3 0
提案や誰かが私に提供できる助けをいただければ幸いです。
複数の候補者と投票の選挙結果の表があります。各投票でどの候補者が最も多くの票を獲得したかを判断する必要があります。
テーブル内のデータのサンプルを次に示します。
PollID NomineeID 投票 1 1 108 1 2 145 1 3 4 2 1 10 2 2 41 2 3 0
提案や誰かが私に提供できる助けをいただければ幸いです。
これは最高値に一致し、引き分けにもなります。
select sd.*
from sampleData sd
inner join (
select PollID, max(votes) as MaxVotes
from sampleData
group by PollID
) x on
sd.PollID = x.PollID and
sd.Votes = x.MaxVotes
SELECT
t.NomineeID,
t.PollID
FROM
( SELECT
NomineeID,
PollID,
RANK() OVER (PARTITION BY i.PollID ORDER BY i.Votes DESC) AS Rank
FROM SampleData i) t
WHERE
t.Rank = 1
SELECT PollID, NomineeID, Votes
FROM
table AS ABB2
JOIN
(SELECT PollID, MAX(Votes) AS most_votes
FROM table) AS ABB1 ON ABB1.PollID = ABB2.PollID AND ABB1.most_votes = ABB2.Votes
同じ投票で得票数が同じ候補者が 2 人いる場合、両方ともこのクエリを使用して抽出されます。