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