我在MS SQL中有2个表:
表:候选人
CandidateId |PositionId
1 1
2 1
3 1
4 2
5 2
6 2
CandidateId |VoteCount
1 8
2 8
3 4
4 7
5 6
6 7
我想要像这样回来一张桌子 (以Max VoteCount返回候选人名单)
CandidateId |PositionId |VoteCount
1 1 8
2 1 8
4 2 7
6 2 7
如果多行具有相同的MAX投票计数,则会显示2行。我尝试了很多次,但它总是返回一行。 你能帮助我吗,我可以用什么查询?
答案 0 :(得分:1)
SELECT * FROM
(
SELECT *, dense_rank() over (partition by PositionId order by VoteCount desc) as rn
FROM yourtable
) d WHERE d.rn = 1
答案 1 :(得分:0)
这不使用dense_rank(),也适用于MySQL
SELECT t.*
FROM yourtable t
INNER JOIN
(
SELECT PositionId, max(VoteCount) as VoteCount
FROM yourtable
GROUP BY PositionId
) m ON t.PositionId = m.PositionId
AND t.VoteCount = m.VoteCount