用偏移类开窗函数 统计每日新老客户数量

本文使用SQL查询统计每日新老客户数量。通过去重、打标识和行列转换,定义新客为首次购买的用户,老客为非首次购买的用户。示例展示了如何在订单表中操作,以日期、新客数量和老客数量为结果。
摘要由CSDN通过智能技术生成

CREATE TABLE 订单表 (
购买时间 VARCHAR2(20),
用户名 VARCHAR2(20));

insert into 订单表 (购买时间, 用户名)
values (‘2017-01-01 22:01:23’, ‘张三’);

insert into 订单表 (购买时间, 用户名)
values (‘2017-01-02 14:20:02’, ‘张三’);

insert into 订单表 (购买时间, 用户名)
values (‘2017-01-02 23:13:55’, ‘李四’);

insert into 订单表 (购买时间, 用户名)
values (‘2017-01-02 23:51:20’, ‘李四’);

insert into 订单表 (购买时间, 用户名)
values (‘2017-01-03 23:07:15’, ‘李四’);

COMMIT;
SELECT * FROM 订单表;
去重 开窗函数(LAG ROW_NUMBER) 行列转换
/*
统计每日新老客户数量
格式:
日期 新客数量 老客数量

新老顾客定义:
若某顾客在某日第一次有购买,当日便为新客,以后每天再来视为老客
某顾客第一天出现在店中即有两次购买记录,视为当日新客
*/

–1.去重
SELECT DISTINCT SUBSTR(购买时间,1,10) 购买时间 ,用户名 FROM 订单表;
–2.打标识(用来区分新老顾客)
SELECT A.购买时间,A.用户名,
CASE WHEN LAG(用户名,1)OVER(PARTITION BY 用户名 ORDER BY 购买时间) IS NULL THEN ‘NEW’
ELSE ‘OLD’
END FLAG<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值