我已经创建了一个包含年、月和事件发生次数(计数)的数据框架。

我想使用spark SQL找出每年发生事件最多的月份。
发布于 2020-10-04 01:24:41
如果要使用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()。
发布于 2020-10-04 01:25:07
您可以使用窗口函数:
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。
https://stackoverflow.com/questions/64186980
复制相似问题