oracle:事务表中的新用户计数

2hh7jdfx  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(282)

我有下表:销售

我每天都需要编写oracle sql查询来识别新客户,当一个客户(customer-x)在某个特定日期(date-x)执行一个新事务时,该客户仅在该日期(date-x)被视为新客户,如果同一个客户(customer-x)在该日期(date-y)之后进行其他事务,如果该客户的日期大于date-x,则该客户不被视为新客户该客户仅在date-x被视为新客户,并且只计算1次

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

m2xkgtsf

m2xkgtsf1#

可以使用窗口函数:

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

相关问题