首页 > 解决方案 > Spark SQL - 查找每年一个月的最大值

问题描述

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

在此处输入图像描述

我想找到每年使用 spark SQL 发生最多事件的月份。

标签: sqlapache-spark-sqlgreatest-n-per-groupwindow-functions

解决方案


如果要使用 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().


推荐阅读