将以下语句改的规范一些:select bprov_desc nvlainnet_count0 as innet_count nvladay_count0 as day_count nvlamonth_count0 as month_count nvlclast_month_dev_count0 as last_month_dev_count nvladay_break_count0 as day_
SELECT b.prov_desc, NVL(a.innet_count,0) AS innet_count, NVL(a.day_count,0) AS day_count, NVL(a.month_count,0) AS month_count, NVL(c.last_month_dev_count,0) AS last_month_dev_count, NVL(a.day_break_count,0) AS day_break_count, NVL(a.month_break_count,0) AS month_break_count, NVL(d.innet_count_zq,0) AS innet_count_zq, NVL(d.day_count_zq,0) AS day_count_zq, NVL(d.month_count_zq,0) AS month_count_zq, NVL(e.last_month_dev_count_zq,0) AS last_month_dev_count_zq, NVL(d.day_break_count_zq,0) AS day_break_count_zq, NVL(d.month_break_count_zq,0) AS month_break_count_zq FROM (SELECT prov_id, prov_desc FROM DIM_PROV) b LEFT JOIN (SELECT a.prov_id, COUNT(DISTINCT CASE WHEN a.is_innet = '1' AND a.day_id = '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS innet_count, COUNT(DISTINCT CASE WHEN a.is_this_dev = '1' AND a.day_id = '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS day_count, COUNT(DISTINCT CASE WHEN a.is_this_dev = '1' AND a.user_id IS NOT NULL THEN a.user_id END) AS month_count, COUNT(DISTINCT CASE WHEN a.is_this_break = '1' AND a.day_id = '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS day_break_count, COUNT(DISTINCT CASE WHEN a.is_this_break = '1' AND a.user_id IS NOT NULL THEN a.user_id END) AS month_break_count FROM (SELECT user_id, prov_id, product_id, day_id, is_innet, is_this_dev, is_this_break FROM zq_dwa.dwa_d_cus_al_cb_user_info WHERE month_id = '202307') a INNER JOIN (SELECT user_id FROM dwd.DWD_D_PRD_CB_USER_PRODUCT WHERE month_id = '202307' AND day_id = '24' AND product_id IN (SELECT product_id FROM dim_yx_5gepn_0708 UNION ALL SELECT b.product_id_b FROM (SELECT product_id, prov_id FROM dwd.DWD_D_PRD_CB_COMP_PRODUCT WHERE relation_type_code IN ('25', '28') AND month_id = '202306' AND day_id = '30') a LEFT JOIN (SELECT DISTINCT product_id_a, product_id_b FROM dwd.DWD_M_PRD_CB_PRODUCTLIMIT WHERE month_id = '202306') b ON b.product_id_a = a.product_id) AND SUBSTRING(end_date, 0, 8) >= '20230724' AND SUBSTRING(start_date, 0, 8) <= '20230724') dwd_d_prd_cb_user_product ON a.user_id = dwd_d_prd_cb_user_product.user_id LEFT JOIN DIM_PROV b ON a.prov_id = b.prov_id GROUP BY a.prov_id) a ON a.prov_id = b.prov_id LEFT JOIN (SELECT a.prov_id, COUNT(DISTINCT CASE WHEN a.is_this_dev = '1' AND day_id >= '1' AND day_id <= '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS last_month_dev_count FROM (SELECT user_id, prov_id, product_id, day_id, is_innet, is_this_dev, is_this_break FROM zq_dwa.dwa_d_cus_al_cb_user_info WHERE month_id = '202306') a INNER JOIN (SELECT user_id FROM dwd.DWD_D_PRD_CB_USER_PRODUCT WHERE month_id = '202307' AND day_id = '24' AND product_id IN (SELECT product_id FROM dim_yx_5gepn_0708 UNION ALL SELECT b.product_id_b FROM (SELECT product_id, prov_id FROM dwd.DWD_D_PRD_CB_COMP_PRODUCT WHERE relation_type_code IN ('25', '28') AND month_id = '202306' AND day_id = '30') a LEFT JOIN (SELECT DISTINCT product_id_a, product_id_b FROM dwd.DWD_M_PRD_CB_PRODUCTLIMIT WHERE month_id = '202306') b ON b.product_id_a = a.product_id) AND SUBSTRING(end_date, 1, 8) >= '20230624' AND SUBSTRING(start_date, 1, 8) <= '20230624') dwd_d_prd_cb_user_product ON a.user_id = dwd_d_prd_cb_user_product.user_id LEFT JOIN DIM_PROV b ON a.prov_id = b.prov_id GROUP BY a.prov_id) c ON c.prov_id = b.prov_id LEFT JOIN (SELECT a.prov_id, COUNT(DISTINCT CASE WHEN a.is_innet = '1' AND a.day_id = '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS innet_count_zq, COUNT(DISTINCT CASE WHEN a.is_this_dev = '1' AND a.day_id = '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS day_count_zq, COUNT(DISTINCT CASE WHEN a.is_this_dev = '1' AND a.user_id IS NOT NULL THEN a.user_id END) AS month_count_zq, COUNT(DISTINCT CASE WHEN a.is_this_break = '1' AND a.day_id = '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS day_break_count_zq, COUNT(DISTINCT CASE WHEN a.is_this_break = '1' AND a.user_id IS NOT NULL THEN a.user_id END) AS month_break_count_zq FROM (SELECT user_id, prov_id, product_id, day_id, is_innet, is_this_dev, is_this_break FROM zq_dwa.dwa_d_cus_al_cb_user_info WHERE month_id = '202307' AND is_zq_develop = '1') a INNER JOIN (SELECT user_id FROM dwd.DWD_D_PRD_CB_USER_PRODUCT WHERE month_id = '202307' AND day_id = '24' AND product_id IN (SELECT product_id FROM dim_yx_5gepn_0708 UNION ALL SELECT b.product_id_b FROM (SELECT product_id, prov_id FROM dwd.DWD_D_PRD_CB_COMP_PRODUCT WHERE relation_type_code IN ('25', '28') AND month_id = '202306' AND day_id = '30') a LEFT JOIN (SELECT DISTINCT product_id_a, product_id_b FROM dwd.DWD_M_PRD_CB_PRODUCTLIMIT WHERE month_id = '202306') b ON b.product_id_a = a.product_id) AND SUBSTRING(end_date, 0, 8) >= '20230724' AND SUBSTRING(start_date, 0, 8) <= '20230724') dwd_d_prd_cb_user_product ON a.user_id = dwd_d_prd_cb_user_product.user_id LEFT JOIN DIM_PROV b ON a.prov_id = b.prov_id GROUP BY a.prov_id) d ON d.prov_id = b.prov_id LEFT JOIN (SELECT a.prov_id, COUNT(DISTINCT CASE WHEN a.is_this_dev = '1' AND day_id >= '1' AND day_id <= '24' AND a.user_id IS NOT NULL THEN a.user_id END) AS last_month_dev_count_zq FROM (SELECT user_id, prov_id, product_id, day_id, is_innet, is_this_dev, is_this_break FROM zq_dwa.dwa_d_cus_al_cb_user_info WHERE month_id = '202306' AND is_zq_develop = '1') a INNER JOIN (SELECT user_id FROM dwd.DWD_D_PRD_CB_USER_PRODUCT WHERE month_id = '202307' AND day_id = '24' AND product_id IN (SELECT product_id FROM dim_yx_5gepn_0708 UNION ALL SELECT b.product_id_b FROM (SELECT product_id, prov_id FROM dwd.DWD_D_PRD_CB_COMP_PRODUCT WHERE relation_typ
原文地址: https://www.cveoy.top/t/topic/ii13 著作权归作者所有。请勿转载和采集!