使用 SQL 查询计算每日频率的累积计数(在 Amazon Redshift 中)

Cumulative count for calculating daily frequency using SQL query (in Amazon Redshift)

我有一个数据集包含 'UI'(唯一 ID)、时间、频率(UI 列中给定值的频率),如下所示:

我想添加一个名为 'daily_frequency' 的新列,它只按顺序计算给定日期 UI 列中的每个唯一值,如下图所示。

例如UI=114737,一天重复2次,那么daily_frequency栏应该有1,2。

我可以使用 Python 和 Panda 包使用 group by 和 cumcount 方法做到这一点,如下所示...

df['daily_frequency'] = df.groupby(['UI','day']).cumcount()+1

但是,出于某种原因,我必须通过 SQL 查询 (Amazon Redshift) 来完成此操作。

我想你想要一个 运行 计数,可以计算为:

COUNT(*) OVER (PARTITION BY ui, TRUNC(time) ORDER BY time
               ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS daily_frequency

虽然Salman的回答似乎是正确的,但我认为ROW_NUMBER()更简单:

COUNT(*) OVER (PARTITION BY ui, time::date
               ORDER BY time
              ) AS daily_frequency