SQL窗口函数,用于在每日级别上统计不同的月份到日期
我正在尝试获取一个查询,该查询将每天为我提供customerid的计数,但对当月是唯一的(例如,如果customerid在当月1日出现,我不希望在21日再次计数) 我希望输出类似于 日期 每月唯一的客户 2021-04-29 500 2021-04-30 523 2021-05-01 45 2021-05-02 55 2021-05-03 72 ... ...SQL窗口函数,用于在每日级别上统计不同的月份到日期,sql,Sql,我正在尝试获取一个查询,该查询将每天为我提供customerid的计数,但对当月是唯一的(例如,如果customerid在当月1日出现,我不希望在21日再次计数) 我希望输出类似于 日期 每月唯一的客户 2021-04-29 500 2021-04-30 523 2021-05-01 45 2021-05-02 55 2021-05-03 72 ... ... 如果你想要一个额外的列,那么你需要两个窗口函数。这个想法是统计用户在一个月内第一次出现的次数 您的代码看起来像Postgres,因此我将
如果你想要一个额外的列,那么你需要两个窗口函数。这个想法是统计用户在一个月内第一次出现的次数 您的代码看起来像Postgres,因此我将使用该语法:
SELECT DATE_TRUNC('day', date) AS day,
DATE_TRUNC('month', date) AS month,
COUNT(DISTINCT customerid) as customers_in_day,
SUM(COUNT(*) FILTER (WHERE seqnum = 1)) OVER (ORDER BY DATE_TRUNC('day', date)) as customers_in_month
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY customerid, DATE_TRUNC('day', date) ORDER BY day) as seqnum
FROM table t
) t
GROUP BY 1, 2
用您正在使用的数据库标记您的问题。