30 lines
1.9 KiB
SQL
30 lines
1.9 KiB
SQL
with 'create_account' as start_event,
|
|
'login' as retuen_visit,
|
|
`#account_id` as visit,
|
|
toDate(addHours(`#event_time`, 8)) as date
|
|
|
|
select reg_date,
|
|
owner_name,
|
|
cnt1,
|
|
if(dateDiff('day', reg_date, toDate(now())) >= 2, toString(round(cnt2 * 100 / cnt1, 2)), '-') as `2留`,
|
|
if(dateDiff('day', reg_date, toDate(now())) >= 3, toString(round(cnt3 * 100 / cnt1, 2)), '-') as `3留`,
|
|
if(dateDiff('day', reg_date, toDate(now())) >= 4, toString(round(cnt4 * 100 / cnt1, 2)), '-') as `4留`,
|
|
if(dateDiff('day', reg_date, toDate(now())) >= 5, toString(round(cnt5 * 100 / cnt1, 2)), '-') as `5留`,
|
|
if(dateDiff('day', reg_date, toDate(now())) >= 6, toString(round(cnt6 * 100 / cnt1, 2)), '-') as `6留`,
|
|
if(dateDiff('day', reg_date, toDate(now())) >= 7, toString(round(cnt7 * 100 / cnt1, 2)), '-') as `7留`
|
|
|
|
from(select date,owner_name, uniqExact(visit) as cnt1 from zhengba.event
|
|
where `#event_name` = start_event
|
|
group by date,owner_name) reg left join
|
|
(select a.reg_date,owner_name,
|
|
sum(if(dateDiff('day',a.reg_date,b.visit_date)=1,1,0)) as cnt2,
|
|
sum(if(dateDiff('day',a.reg_date,b.visit_date)=2,1,0)) as cnt3,
|
|
sum(if(dateDiff('day',a.reg_date,b.visit_date)=3,1,0)) as cnt4,
|
|
sum(if(dateDiff('day',a.reg_date,b.visit_date)=4,1,0)) as cnt5,
|
|
sum(if(dateDiff('day',a.reg_date,b.visit_date)=5,1,0)) as cnt6,
|
|
sum(if(dateDiff('day',a.reg_date,b.visit_date)=6,1,0)) as cnt7
|
|
from (select date as reg_date,owner_name, visit from zhengba.event where `#event_name` = start_event group by reg_date, visit,owner_name) a
|
|
left join (select date as visit_date,owner_name, visit from zhengba.event where `#event_name` = retuen_visit group by visit_date, visit,owner_name) b on
|
|
a.visit = b.visit and a.owner_name=b.owner_name
|
|
group by a.reg_date,a.owner_name) log on reg.date=log.reg_date and reg.owner_name=log.owner_name
|
|
order by reg_date |