我有一個多名候選人和民意調查的選舉結果表。我需要確定哪個候選人每次投票得票最多。哪一行的值最高?
下面是在表中的數據樣本:
PollID NomineeID Votes 1 1 108 1 2 145 1 3 4 2 1 10 2 2 41 2 3 0
我會很感激任何建議或幫助任何人都可以給我。
我有一個多名候選人和民意調查的選舉結果表。我需要確定哪個候選人每次投票得票最多。哪一行的值最高?
下面是在表中的數據樣本:
PollID NomineeID Votes 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
需要內部連接。我認爲RANK()會有更好的表現。也許CTE會更好。 – Pellared
非常感謝! – user2860285
+1不使用sqlserver特定代碼。這將在大多數(所有?)數據庫風格 – Bohemian
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名被提名人與相同數量的票數最多的相同調查中,他們都會使用這個查詢
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 Poll_table
where Votes in (
select max(Votes) from Poll_table
group by Pollid
);
的數據庫拉你使用(答案各不相同) – Bohemian
首先,我會'總結(票)',按'NomineeId,PollId'分組。然後在這個結果集上工作,只保留具有最高票數的「代名人」。 –
@Bohemian - 我正在使用SQL Server 2008 – user2860285