将团购与 window 功能结合起来?

Combining a group buy with a window function?

我正在尝试弄清楚如何将分组依据与 window 函数组合

我的字段为

timestamp track_name 

其中时间戳表示曲目的播放时间。

如果我想获取每天播放次数最多的曲目,我该怎么做?

我需要按日期(时间戳)分组的 个 track_name 和 track_name

但不确定如何按计数分组然后获得当天的最大收益?

感谢!

您当然可以将分析函数与 GROUP BY 查询混合使用。在下面的查询中,我按日期和曲目名称聚合,但也根据聚合计数生成排名。对于每个日期,保留具有最高等级的曲目。请注意,我使用 RANK 而不是 ROW_NUMBER,因为前者可以处理两个或更多曲目在一天内播放次数最多的情况。

WITH cte AS (
    SELECT DATE(timestamp) AS dt, track_name,
        RANK() OVER (PARTITION BY DATE(timestamp) ORDER BY COUNT(*) DESC) rnk
    FROM yourTable
    GROUP BY DATE(timestamp), track_name
)

SELECT dt, track_name
FROM cte
WHERE rnk = 1;

这是可行的,因为解析函数在 GROUP BY 已经完成后进行计算。因此,COUNT(*) 可用于调用 RANK()