0

我有一张桌子,上面有来自多个部门(将每个部门视为一个州或类似部门)对多个候选人的投票。每个部门都有多个候选人,每个候选人都有不同的选票。

这是我的表(简化)

CREATE TABLE [Results]
(
    [SectorID] BIGINT,
    [CanditateID] BIGINT, 
    [VoteCount] BIGINT,
    [Newness] DATETIME
)

我显然将扇区和候选元数据保存在另一个表中,但我需要为每个扇区找到投票最高的候选者,因此我可以将这些表连接到一个视图中。

每个部门的最佳候选人,由 决定[VoteCount],如果有两个投票数相同,则由 决定[Newness]。每个扇区必须保留一行,并且我必须能够在视图中使用它,并与元数据连接在一起。

我如何从每个部门中获得最高票数的候选人?

4

2 回答 2

4

假设您使用的是 SQL Server 2005 或更高版本,您希望通过以下方式执行此操作row_number()

select r.*
from (select r.*,
             row_number() over (partition by SectorId order by VoteCount desc, Newness desc) as seqnum
      from Results r
     ) r
where seqnum = 1
于 2012-10-24T16:53:47.410 回答
2

这将起作用并且可以加入:

SELECT 
    TR.SectorID, TR.CandidateID
FROM
    tblResults TR
    INNER JOIN ...
    INNER JOIN ...
WHERE CandidateID =
(
    SELECT TOP 1 CandidateID
    FROM tblResults TRSUB
    WHERE TRSUB.SectorID = TR.SectorID
    ORDER BY VoteCount DESC, Newness DESC
)
于 2012-10-24T17:03:04.167 回答