如何解决Spark SQL-查找每年一个月的最大值
我创建了一个数据框架,其中包含年,月和事件发生(计数)。
我想使用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 举报,一经查实,本站将立刻删除。