【问题标题】:Oracle: Count of New Users from Transactions tableOracle:事务表中的新用户计数
【发布时间】:2020-07-18 09:56:55
【问题描述】:

我有下表 表:销售额

我每天都需要编写 Oracle SQL 查询来识别新客户, 当客户 (Customer-X) 在特定日期 (Date-X) 进行 1 次新交易时,客户仅在该日期 (Date-X) 被视为新客户,如果同一客户 (Customer-X) 在之后进行其他交易that(Date-Y),那么这个客户在任何大于 Date-X 的日期都不会被视为新客户 此客户仅在 Date-X 被视为新客户,仅计 1 次

我还需要生成汇总结果 这是每天的新客户数

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    你可以使用窗口函数:

    select s.*,
           (case when row_number() over (partition by user_id order by s_date) = 1
                 then 'Yes' else 'No'
            end) as new_customer
    from sales s;
    

    然后您可以汇总摘要:

    select s_date, sum(case when new_customer = 'Yes' then 1 else 0 end)
    from (select s.*,
                 (case when row_number() over (partition by user_id order by s_date) = 1
                       then 'Yes' else 'No'
                  end) as new_customer
          from sales s
         ) s
    group by s_date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多