能帮我看看SQL有优化空间吗,为什么执行数据超时呢
select *
from
(
-- 日维度
select
cast(part_dt as date) as dates -- PART_DT
,part_dt -- PART_DT
,'日' as time_type
,series_name -- 车系名称
,case when series_name='汇总' then 1 else 2 end car_num -- 车系排序
-- 平台
,cum_act -- 平台累计启动数
,cum_act_and_auth -- 平台累计启动认证数
,cum_act-cum_act_and_auth as a1 -- 平台累计启动未认证数
,day_new_act -- 平台新增启动数
,day_new_act_auth -- 平台新增启动认证数
,day_new_act-day_new_act_auth as a2 -- 平台新增未启动数
,cum_act_com_auth -- 平台累计启动认证过数
,cum_act_vin -- 平台累计启动认证车辆数
,day_act -- 平台启动数
,day_act_auth -- 平台启动认证数
,day_act-day_act_auth as a3 -- 平台启动未认证数
,day_act/cum_act as a4 -- 平台累计活跃率
,day_act_auth/cum_act_and_auth as a5 -- 平台累计认证活跃率
,(day_act-day_act_auth)/(cum_act-cum_act_and_auth) as a6 -- 平台累计未认证活跃率
-- APP
,cum_app_act -- APP累计启动数
,cum_app_act_and_auth -- APP累计启动认证数
,cum_app_act-cum_app_act_and_auth as a7 -- APP累计启动未认证数
,day_app_new_act -- APP新增启动数
,day_app_new_act_auth -- APP新增启动认证数
,day_app_new_act-day_app_new_act_auth as a8 -- APP新增启动未认证数
,cum_app_act_com_auth -- APP累计启动认证过数
,cum_app_act_vin -- APP累计启动认证车辆数
,day_app_act -- APP启动数
,day_app_act_auth -- APP启动认证数
,day_app_act-day_app_act_auth as a9 -- APP启动未认证数
,day_app_act/cum_app_act as a10 -- APP累计活跃率
,day_app_act_auth/cum_app_act_and_auth as a11 -- APP累计认证活跃率
,(day_app_act-day_app_act_auth)/(cum_app_act-cum_app_act_and_auth) as a12 -- APP累计未认证活跃率
-- 小程序
,cum_pro_act -- 小程序累计启动数
,cum_pro_act_and_auth -- 小程序累计启动认证数
,cum_pro_act-cum_pro_act_and_auth as a13 -- 小程序累计启动未认证数
,day_pro_new_act -- 小程序新增启动数
,day_pro_new_act_auth -- 小程序新增启动认证数
,day_pro_new_act-day_pro_new_act_auth as a14 -- 小程序新增启动未认证数
,cum_pro_act_com_auth -- 小程序累计启动认证过数
,cum_pro_act_vin -- 小程序累计启动认证车辆数
,day_pro_act -- 小程序启动数
,day_pro_act_auth -- 小程序启动认证数
,day_pro_act-day_pro_act_auth as a15 -- 小程序启动未认证数
,day_pro_act/cum_pro_act as a16 -- 小程累计启动未认证数
,day_pro_act_auth/cum_pro_act_and_auth as a17 -- 小程序累计认证活跃率
,(day_pro_act-day_pro_act_auth)/(cum_pro_act-cum_pro_act_and_auth) as a18 -- 小程序累计未认证活跃率
from bisi_dm.dmk_app_cum_uv_authentication
union all
-- 汇总
select
cast(ra.part_dt as date) as dates
,d.part_dt
,d.time_type
,ra.series_name
,case when ra.series_name='汇总' then 1 else 2 end car_num -- 车系排序
-- 平台
,cum_act -- 平台累计启动数
,cum_act_and_auth -- 平台累计启动认证数
,cum_act-cum_act_and_auth as a1 -- 平台累计启动未认证数
,ra.new_acitve -- 平台新增启动数
,ra.new_active_auth -- 平台新增启动认证数
,ra.new_acitve-ra.new_active_auth as a2 -- 平台新增未启动数
,cum_act_com_auth -- 平台累计启动认证过数
,cum_act_vin -- 平台累计启动认证车辆数
,ra.active -- 平台启动数
,ra.active_auth -- 平台启动认证数
,ra.active-ra.active as a3 -- 平台启动未认证数
,ra.active/cum_act as a4 -- 平台累计活跃率
,ra.active_auth/cum_act_and_auth as a5 -- 平台累计认证活跃率
,(ra.active-ra.active)/(cum_act-cum_act_and_auth) as a6 -- 平台累计未认证活跃率
-- APP
,cum_app_act -- APP累计启动数
,cum_app_act_and_auth -- APP累计启动认证数
,cum_app_act-cum_app_act_and_auth as a7 -- APP累计启动未认证数
,ra.app_new_acitve -- APP新增启动数
,ra.app_new_active_auth -- APP新增启动认证数
,ra.app_new_acitve-ra.app_new_active_auth as a8 -- APP新增启动未认证数
,cum_app_act_com_auth -- APP累计启动认证过数
,cum_app_act_vin -- APP累计启动认证车辆数
,ra.app_active -- APP启动数
,ra.app_active_auth -- APP启动认证数
,ra.app_active-ra.app_active_auth as a9 -- APP启动未认证数
,ra.app_active/cum_app_act as a10 -- APP累计活跃率
,ra.app_active_auth/cum_app_act_and_auth as a11 -- APP累计认证活跃率
,(ra.app_active-ra.app_active_auth)/(cum_app_act-cum_app_act_and_auth) as a12 -- APP累计未认证活跃率
-- 小程序
,cum_pro_act -- 小程序累计启动数
,cum_pro_act_and_auth -- 小程序累计启动认证数
,cum_pro_act-cum_pro_act_and_auth as a13 -- 小程序累计启动未认证数
,ra.pro_new_acitve -- 小程序新增启动数
,ra.pro_new_active_auth -- 小程序新增启动认证数
,ra.pro_new_acitve-ra.pro_new_active_auth as a14 -- 小程序新增启动未认证数
,cum_pro_act_com_auth -- 小程序累计启动认证过数
,cum_pro_act_vin -- 小程序累计启动认证车辆数
,ra.pro_active -- 小程序启动数
,ra.pro_active_auth -- 小程序启动认证数
,ra.pro_active-ra.pro_active_auth as a15 -- 小程序启动未认证数
,ra.pro_active/cum_pro_act as a16 -- 小程累计启动未认证数
,ra.pro_active_auth/cum_pro_act_and_auth as a17 -- 小程序累计认证活跃率
,(ra.pro_active-ra.pro_active_auth)/(cum_pro_act-cum_pro_act_and_auth) as a18 -- 小程序累计未认证活跃率
from bisi_dm.dmk_app_uv_authentication_d as ra
inner join
( -- 时间维度表
select
time_id
,time_type
,case when time_type='周' then CONCAT(min(part_dt),'~',max(part_dt))
when time_type='月' then substr(max(part_dt),1,7)
when time_type='年' then substr(max(part_dt),1,4)
end as part_dt
,max(part_dt) cum_date -- 取统计周期内最后一天
from bisi_dm.dmk_app_regi_auth_date d
group by time_id,time_type
) d on ra.time_id = d.time_id
left join bisi_dm.dmk_app_cum_uv_authentication as cra on cra.part_dt = d.cum_date and ra.series_name = cra.series_name
where ra.part_dt = (select max(part_dt) from bisi_dm.dmk_app_user_authentication_d) -- 每日全量更新,只取最后一天
) a
order by car_num
|