使用MAX SQL时返回多行

时间:2014-11-11 13:52:21

标签: mysql sql-server max aggregate-functions aggregation

我在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行。我尝试了很多次,但它总是返回一行。 你能帮助我吗,我可以用什么查询?

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