CREATE DATABASE t_view;
use t_view;
CREATE TABLE t_view (
访问_id int,
访问时间 varchar(255),
访问用户id int,
访问页面名称 varchar(255)
);
INSERT INTO t_view VALUES (1, '2023-01-01 13:44:39', 1111, '首页');
INSERT INTO t_view VALUES (2, '2023-01-01 16:44:39', 1111, '创建订单页');
INSERT INTO t_view VALUES (3, '2023-01-01 12:44:08', 2222, '首页');
INSERT INTO t_view VALUES (4, '2023-01-02 08:44:39', 3333, '首页');
INSERT INTO t_view VALUES (5, '2023-01-03 13:16:13', 4444, '首页');
INSERT INTO t_view VALUES (6, '2023-01-02 14:44:08', 3333, '创建订单页');
INSERT INTO t_view VALUES (7, '2023-01-01 13:08:39', 2222, '创建订单页');
INSERT INTO t_view VALUES (8, '2023-01-04 13:16:14', 1111, '首页');
INSERT INTO t_view VALUES (9, '2023-01-04 14:44:13', 3333, '首页');
INSERT INTO t_view VALUES (10, '2023-01-03 13:16:39', 2222, '首页');
INSERT INTO t_view VALUES (11, '2023-01-03 13:30:00', 2222, '创建订单页');
CREATE DATABASE ord;
use ord;
CREATE TABLE ord (
订单_id int,
支付用户id varchar(255),
套餐内容 varchar(255),
下单日期 date NOT NULL,
订单状态 varchar(255)
);
INSERT INTO ord VALUES (10080, 2222,'套餐一', '2023-01-03 14:00:00','支付完成');
INSERT INTO ord VALUES (10081, 3333,'套餐一', '2023-01-04 15:23:00','支付完成');
INSERT INTO ord VALUES (10083, 2222,'套餐二', '2023-01-01 13:28:33','支付完成');
INSERT INTO ord VALUES (10084, 5555,'套餐二', '2023-01-01 13:28:33','支付完成');
INSERT INTO ord VALUES (10085, 1111,'套餐一', '2023-01-01 14:00:00','支付完成');
INSERT INTO ord VALUES (10086, 1111,'套餐一', '2023-01-04 15:23:00','取消');
SELECT * FROM t_view;
SELECT * FROM ord;
select
tv_date as date,
count(distinct 访问用户id) as 每日访问用户数,
count(distinct 支付用户id) as 每日支付完成用户数
from (
select 访问用户id,substring(访问时间,1,10) as tv_date
from t_view ) tv
join(
select 支付用户id,substring(下单日期,1,10) as od_date,订单状态
from ord
where 订单状态 = '支付完成' ) od
on (tv.tv_date = od.od_date)
group by date;
select tv_date as 日期,
count(distinct 访问用户id) as 每日访问用户数,
count(distinct 支付用户id) as 每日支付完成用户数
from(
select 访问用户id,substring(访问时间,1,10) as tv_date
from t_view)tv
left join(
select 支付用户id,substring(下单日期,1,10) as od_date,订单状态
from ord
where 订单状态 = '支付完成') od
on (tv.tv_date = od.od_date) and (tv.访问用户id = od.支付用户id)
group by tv_date
select 支付用户id as '复购用户id'
from (
select ov.支付用户id,count(ov.支付用户id) as num
from(
select 支付用户id
from ord
where 订单状态 = '支付完成' and substring(下单日期,1,10) = '2023-01-01') od
left join(
select 支付用户id
from ord
where 订单状态 = '支付完成')ov
on ov.支付用户id =od.支付用户id
group by ov.支付用户id
) o
where num>1