我有一个多名候选人和民意调查的选举结果表。我需要确定哪个候选人每次投票得票最多。哪一行的值最高?
下面是在表中的数据样本:
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