【问题标题】:max on count in sqlsql中的最大计数
【发布时间】:2020-07-26 05:46:19
【问题描述】:

希望获得每年获得最多金牌的球员 试过 max(count())

然后尝试

select olympic_name, player_name, max(medals) as max 
from (
  select olympic_name, player_name, count(medal) as medals 
  from olympics 
  where medal='Gold'
  group by olympic_name, player_name 
  order by medals desc 
) 
group by olympic_name,player_name 
order by max desc

+------------+--------------------+------+
|olympic_name|         player_name|medals|
+------------+--------------------+------+
| 2008 Summer|Michael Fred Phel...|     8|
| 2016 Summer|Michael Fred Phel...|     5|
| 2016 Summer|Kathleen Geneviev...|     4|
| 2016 Summer|Simone Arianne Biles|     4|
| 2012 Summer|Michael Fred Phel...|     4|
| 2012 Summer|Melissa Jeanette ...|     4|
| 2012 Summer|Dana Whitney Voll...|     3|
| 2016 Summer|         Danuta Kozk|     3|
| 2016 Summer|       Katinka Hossz|     3|
| 2008 Summer|Christopher Andre...|     3|
| 2016 Summer|         Ryan Murphy|     3|
| 2016 Summer| Jason Francis Kenny|     3|
| 2010 Winter|           Wang Meng|     3|
| 2014 Winter|           Viktor An|     3|
| 2008 Summer|             Zou Kai|     3|
| 2008 Summer|Stephanie Louise ...|     3|
| 2014 Winter|Darya Vladimirovn...|     3|
| 2016 Summer|  Usain St. Leo Bolt|     3|
| 2014 Winter|        Marit Bjrgen|     3|
| 2010 Winter|        Marit Bjrgen|     3|

【问题讨论】:

    标签: sql sql-server oracle apache-spark


    【解决方案1】:

    使用ROW_NUMBER()RANK()

    select olympic_name, player_name, medals
    from (select olympic_name, player_name, count(*) as medals,
                 rank() over (partition by olympic_name order by count(*) desc) as seqnum
          from olympics 
          where medal = 'Gold'
          group by olympic_name, player_name 
         ) op
    where seqnum = 1;
    

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 2020-09-12
      • 2015-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      相关资源
      最近更新 更多