简体   繁体   English

SQL查询分组

[英]Sql Query Grouping

I have a table Votes contain data 我有一张桌子票数包含数据

Votes    Designation    CandidateID
 4         President      Person1
 3         President      Person2
 5         Secretary      Person5
 1         Vice-Present   Person6

I want to query the winner candidate only per designation. 我只想按指定查询获胜者候选人。 like 喜欢

4      President Person1
 5      Secretary Person2
 1      Vice_President Person6

This is a good use for row_number() or dense_rank() : 这对于row_number()dense_rank()是一个很好的用法:

select v.*
from (select v.*,
             dense_rank() over (partition by designation order by votes desc) as seqnum
      from votes v
     ) v
where seqnum = 1;

Note that this uses dense_rank() . 请注意,这使用dense_rank() If there is a tie, then all "winners" are included. 如果有平局,则包括所有“优胜者”。 You can use row_number() to choose an arbitrary winner. 您可以使用row_number()选择任意赢家。

See working SQL Fiddle demo 查看有效的SQL Fiddle演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM