微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Spark SQL-查找每年一个月的最大值

如何解决Spark SQL-查找每年一个月的最大值

我创建了一个数据框架,其中包含年,月和事件发生(计数)。

enter image description here

我想使用Spark sql查找每年发生事件最多的月份。

解决方法

如果要使用SQL,可以使用窗口函数:

select t.*
from (select t.*,row_number() over (partition by year order by count desc) as seqnum
      from t
     ) t
where seqnum = 1;

即使存在最大数量的联系,每年也会返回一行。如果要在发生平局时所有这些行,请使用rank()而不是row_number()

,

您可以使用窗口功能:

select *
from (select t.*,rank() over(partition by year order by cnt desc) rn from mytable t) t
where rn = 1

对于每一年,这都会为您提供cnt最多的行。如果有关系,查询将返回它们。

请注意,count是SQL中的语言关键字,因此不是列名的理想选择。我在查询中将其重命名为cnt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。