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<