【发布时间】:2020-10-18 05:54:50
【问题描述】:
我有一个订单表,其中包含有关下订单的时间和下单者的信息。
order_timestamp user_id
-------------------- ---------
1-JAN-20 02.56.12 123
3-JAN-20 12.01.01 533
23-JAN-20 08.42.18 123
12-JAN-20 02.53.59 238
19-JAN-20 02.33.72 34
使用此信息,我想每天计算在过去 31 天内仅下过一个订单的不同用户的数量,从而生成一个表格
date distinct_user_count
----------- ---------------------
1-JAN-20 8
2-JAN-20 10
3-JAN-20 11
(i.e in the 31 days before and including 1st jan 2020, 8 unique users ordered only once, etc...)
简单地说,对于每一天 - 31,计算该期间每个用户的订单数(表中的条目),如果该计数仅为 1,则计算该用户的初始开始日期。
我可以编写查询将只订购一次的人计算为:
with temp as (
select
user_id,
count(*) as order_count
from
orders
where
trunc(order_timestamp) >= trunc(systimestamp - interval '31' day)
group by
user_id
)
select
user_id,
order_count
from
temp
where
login_count=1
但不确定如何实现按日期计数。请您协助我完成/编写查询吗?感谢您提前支持。
【问题讨论】:
-
用您正在使用的数据库标记您的问题。