-- 三、数据分析 ---------------------------- -- 分析条件一 ---------------------------- -- 1.1.1.1 线下各店铺每年度销售金额、订单数量、订单均价 SELECT toYear(a.saletime) AS "年份", a.store_code AS "店铺编码", b.store_name AS "店铺名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "销售金额(元)", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量", CASE WHEN "订单数量" = 0 THEN 0 ELSE ROUND("销售金额(元)"/"订单数量",2) END AS "订单均价(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份","店铺编码","店铺名称" ORDER BY toYear(a.saletime) ASC,"销售金额(元)" DESC; -- 1.1.1.2 线下各店铺关联原单每年度净销售 SELECT toYear(a.saletime) AS "年份", a.store_code AS "店铺编码", b.store_name AS "店铺名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code,store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份", "店铺编码", "店铺名称" ORDER BY toYear(a.saletime) ASC, "净销售金额(元)" DESC; -- 1.1.1.2 线下各店铺关联原单24年度净销售 SELECT toYear(a.saletime) AS "年份", a.store_code AS "店铺编码", b.store_name AS "店铺名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code,store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature WHERE a.saletime >= '2024-01-01 00:00:00' AND a.saletime <'2024-07-01 00:00:00' GROUP BY "年份", "店铺编码", "店铺名称" ORDER BY toYear(a.saletime) ASC, "净销售金额(元)" DESC; -- 1.1.1.2 线下各店铺不关联原单每年度净销售金额 SELECT a.sale_year AS "年份", a.store_code AS "店铺编码", b.store_name AS "店铺名称", a.settle_amt AS "净销售金额(元)" FROM( SELECT toYear(sale_time) AS sale_year, store_code, SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS settle_amt FROM custom_offline_sale_return_settle_local cosrl GROUP BY sale_year, store_code ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code ORDER BY "年份" ASC, "净销售金额(元)" DESC; -- 1.1.1.2 线下各店铺不关联原单24年度净销售金额 SELECT a.sale_year AS "年份", a.store_code AS "店铺编码", b.store_name AS "店铺名称", a.settle_amt AS "净销售金额(元)" FROM( SELECT toYear(sale_time) AS sale_year, store_code, SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS settle_amt FROM custom_offline_sale_return_settle_local WHERE sale_time >= '2024-01-01 00:00:00' AND sale_time <'2024-07-01 00:00:00' GROUP BY sale_year, store_code ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code ORDER BY "年份" ASC, "净销售金额(元)" DESC; -- 1.1.2.1 线下按品牌关联原单按年统计净销售金额 SELECT toYear(a.saletime) AS "年份", a.brand_code AS "品牌编码", CASE WHEN brand_code = 'HLA' THEN '海澜之家' WHEN brand_code = 'YEO' THEN '英氏' WHEN brand_code = 'NCL' THEN '男生女生' WHEN brand_code = 'OVV' THEN 'OVV' WHEN brand_code = 'HLM' THEN '海澜优选' WHEN brand_code = 'BES' THEN '海一家' WHEN brand_code = 'HGS' THEN '蓝鲸' WHEN brand_code = 'HJS' THEN '黑鲸' WHEN brand_code = 'SBZ' THEN '斯搏兹' WHEN brand_code = 'JXH' THEN '京新海' WHEN brand_code = 'HED' THEN 'HEAD' WHEN brand_code = 'HLX' THEN '海澜之家甄选好鞋' WHEN brand_code = 'HLP' THEN 'HLA PLUS' END AS "品牌名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code ,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature GROUP BY "年份","品牌编码","品牌名称" ORDER BY toYear(a.saletime) ASC, "净销售金额(元)" DESC; -- 1.1.2.1 按品牌关联原单统计24年上半年净销售金额 SELECT toYear(a.saletime) AS "年份", a.brand_code AS "品牌编码", CASE WHEN brand_code = 'HLA' THEN '海澜之家' WHEN brand_code = 'YEO' THEN '英氏' WHEN brand_code = 'NCL' THEN '男生女生' WHEN brand_code = 'OVV' THEN 'OVV' WHEN brand_code = 'HLM' THEN '海澜优选' WHEN brand_code = 'BES' THEN '海一家' WHEN brand_code = 'HGS' THEN '蓝鲸' WHEN brand_code = 'HJS' THEN '黑鲸' WHEN brand_code = 'SBZ' THEN '斯搏兹' WHEN brand_code = 'JXH' THEN '京新海' WHEN brand_code = 'HED' THEN 'HEAD' WHEN brand_code = 'HLX' THEN '海澜之家甄选好鞋' WHEN brand_code = 'HLP' THEN 'HLA PLUS' END AS "品牌名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code ,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature WHERE a.saletime >= '2024-01-01 00:00:00' AND a.saletime <'2024-07-01 00:00:00' GROUP BY "年份","品牌编码","品牌名称" ORDER BY toYear(a.saletime) ASC, "净销售金额(元)" DESC; -- 1.1.2.1 线下按品牌不关联原单按年统计净销售金额 SELECT a.sale_year AS "年份", a.brand_code AS "品牌编码", a.brand_name AS "品牌名称", a.amt AS "净销售金额(元)" FROM( SELECT toYear(sale_time) AS sale_year, brand_code, CASE WHEN brand_code = 'HLA' THEN '海澜之家' WHEN brand_code = 'YEO' THEN '英氏' WHEN brand_code = 'NCL' THEN '男生女生' WHEN brand_code = 'OVV' THEN 'OVV' WHEN brand_code = 'HLM' THEN '海澜优选' WHEN brand_code = 'BES' THEN '海一家' WHEN brand_code = 'HGS' THEN '蓝鲸' WHEN brand_code = 'HJS' THEN '黑鲸' WHEN brand_code = 'SBZ' THEN '斯搏兹' WHEN brand_code = 'JXH' THEN '京新海' WHEN brand_code = 'HED' THEN 'HEAD' WHEN brand_code = 'HLX' THEN '海澜之家甄选好鞋' WHEN brand_code = 'HLP' THEN 'HLA PLUS' END AS brand_name, SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS amt FROM custom_offline_sale_return_settle_local cosrl GROUP BY sale_year, brand_code,brand_name ) a ORDER BY a.sale_year ASC, "净销售金额(元)" DESC; -- 1.1.2.1 线下按品牌不关联原单统计24年净销售金额 SELECT a.sale_year AS "年份", a.brand_code AS "品牌编码", a.brand_name AS "品牌名称", a.amt AS "净销售金额(元)" FROM( SELECT toYear(sale_time) AS sale_year, brand_code, CASE WHEN brand_code = 'HLA' THEN '海澜之家' WHEN brand_code = 'YEO' THEN '英氏' WHEN brand_code = 'NCL' THEN '男生女生' WHEN brand_code = 'OVV' THEN 'OVV' WHEN brand_code = 'HLM' THEN '海澜优选' WHEN brand_code = 'BES' THEN '海一家' WHEN brand_code = 'HGS' THEN '蓝鲸' WHEN brand_code = 'HJS' THEN '黑鲸' WHEN brand_code = 'SBZ' THEN '斯搏兹' WHEN brand_code = 'JXH' THEN '京新海' WHEN brand_code = 'HED' THEN 'HEAD' WHEN brand_code = 'HLX' THEN '海澜之家甄选好鞋' WHEN brand_code = 'HLP' THEN 'HLA PLUS' END AS brand_name, SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS amt FROM custom_offline_sale_return_settle_local cosrl WHERE sale_time >= '2024-01-01 00:00:00' AND sale_time < '2024-07-01 00:00:00' GROUP BY sale_year, brand_code,brand_name ) a ORDER BY a.sale_year ASC, "净销售金额(元)" DESC; -- 1.1.2.2 线下海外品牌关联原单年度净销售 SELECT toYear(a.saletime) AS "年份", CASE WHEN a.brand_code = '' THEN d.brand_code WHEN a.brand_code <>'' THEN a.brand_code END AS "品牌编码", CASE WHEN "品牌编码" = 'HLA' THEN '海澜之家' WHEN "品牌编码" = 'YEO' THEN '英氏' WHEN "品牌编码" = 'NCL' THEN '男生女生' WHEN "品牌编码" = 'OVV' THEN 'OVV' WHEN "品牌编码" = 'HLM' THEN '海澜优选' WHEN "品牌编码" = 'BES' THEN '海一家' WHEN "品牌编码" = 'HGS' THEN '蓝鲸' WHEN "品牌编码" = 'HJS' THEN '黑鲸' WHEN "品牌编码" = 'SBZ' THEN '斯搏兹' WHEN "品牌编码" = 'JXH' THEN '京新海' WHEN "品牌编码" = 'HED' THEN 'HEAD' WHEN "品牌编码" = 'HLX' THEN '海澜之家甄选好鞋' WHEN "品牌编码" = 'HLP' THEN 'HLA PLUS' WHEN "品牌编码" = 'EHT' THEN '爱居兔' WHEN "品牌编码" = 'STA' THEN '思加图' ELSE "品牌编码" END AS "品牌名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_abroad_sale_return_settle_local GROUP BY store_code ,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature LEFT JOIN( SELECT store_code, MIN(brand_code) AS brand_code FROM dim_hkaudit_store_other_mt GROUP BY store_code )d ON a.store_code = d.store_code GROUP BY "年份","品牌编码","品牌名称" ORDER BY toYear(a.saletime) ASC, "净销售金额(元)" DESC; -- 1.1.2.2 线下海外品牌不关联原单年度净销售 SELECT a.sale_year AS "年份", a.brand_code AS "品牌编码", a.brand_name AS "品牌名称", a.amt AS "净销售金额(元)" FROM( SELECT toYear(sale_time) AS sale_year, CASE WHEN brand_code = '' THEN d.brand_code WHEN brand_code <>'' THEN brand_code END AS brand_code, CASE WHEN brand_code = 'HLA' THEN '海澜之家' WHEN brand_code = 'YEO' THEN '英氏' WHEN brand_code = 'NCL' THEN '男生女生' WHEN brand_code = 'OVV' THEN 'OVV' WHEN brand_code = 'HLM' THEN '海澜优选' WHEN brand_code = 'BES' THEN '海一家' WHEN brand_code = 'HGS' THEN '蓝鲸' WHEN brand_code = 'HJS' THEN '黑鲸' WHEN brand_code = 'SBZ' THEN '斯搏兹' WHEN brand_code = 'JXH' THEN '京新海' WHEN brand_code = 'HED' THEN 'HEAD' WHEN brand_code = 'HLX' THEN '海澜之家甄选好鞋' WHEN brand_code = 'HLP' THEN 'HLA PLUS' WHEN brand_code = 'EHT' THEN '爱居兔' WHEN brand_code = 'STA' THEN '思加图' ELSE brand_code END AS brand_name, SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS amt FROM custom_offline_abroad_sale_return_settle_local c LEFT JOIN( SELECT store_code, MIN(brand_code) AS brand_code FROM dim_hkaudit_store_other_mt GROUP BY store_code )d ON c.store_code = d.store_code GROUP BY sale_year, brand_code, brand_name ) a ORDER BY a.sale_year ASC, "净销售金额(元)" DESC; -- 1.1.3.1 线下按照门店性质关联原单统计销售金额、订单数量、订单均价 SELECT toYear(a.saletime) AS "年份", a.store_nature AS "门店性质", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "销售金额(元)", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量", CASE WHEN "订单数量" = 0 THEN 0 ELSE ROUND(SUM(a.sale_amt)/"订单数量",2) END AS "订单均价(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature GROUP BY "年份","门店性质" ORDER BY toYear(a.saletime) ASC,"销售金额(元)" DESC; -- 1.1.3.1 线下按照门店性质关联原单统计24年销售金额、订单数量、订单均价 SELECT toYear(a.saletime) AS "年份", a.store_nature AS "门店性质", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "销售金额(元)", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量", CASE WHEN "订单数量" = 0 THEN 0 ELSE ROUND(SUM(a.sale_amt)/"订单数量",2) END AS "订单均价(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature WHERE a.saletime >='2024-01-01 00:00:00' AND a.saletime <'2024-07-01 00:00:00' GROUP BY "年份","门店性质" ORDER BY toYear(a.saletime) ASC,"销售金额(元)" DESC; -- 1.1.3.2 线下按门店性质关联原单统计净销售金额 SELECT toYear(a.saletime) AS "年份", a.store_nature AS "门店性质", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature GROUP BY "年份","门店性质" ORDER BY toYear(a.saletime) ASC,"净销售金额(元)" DESC; -- 1.1.3.2 线下按门店性质关联原单统计24年净销售金额 SELECT toYear(a.saletime) AS "年份", a.store_nature AS "门店性质", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code, receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(saletime)) AND r.store_nature = a.store_nature WHERE a.saletime >='2024-01-01 00:00:00' AND a.saletime <'2024-07-01 00:00:00' GROUP BY "年份","门店性质" ORDER BY toYear(a.saletime) ASC,"净销售金额(元)" DESC; -- 1.1.3.3 线下按门店性质不关联原单统计净销售金额 SELECT toYear(a.sale_time) AS "年份", a.store_nature AS "门店性质", SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS "净销售金额" FROM custom_offline_sale_return_settle_local a GROUP BY "年份","门店性质" ORDER BY "年份","门店性质"; -- 1.1.3.3 线下按门店性质不关联原单统计24年净销售 SELECT toYear(a.sale_time) AS "年份", a.store_nature AS "门店性质", SUM(toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2)) AS "净销售金额" FROM custom_offline_sale_return_settle_local a WHERE a.sale_time >= '2024-01-01 00:00:00' AND a.sale_time <'2024-07-01 00:00:00' GROUP BY "年份","门店性质" ORDER BY "年份","门店性质"; -- 1.1.4 线下店铺月度销售金额 SELECT a.sale_year AS "年份", a.sale_month AS "月份", a.store_code AS "店铺编码", b.store_name AS "店铺名称", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.sale_amt ELSE toDecimal64(toDecimal64(a.sale_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "销售金额(元)" FROM( SELECT store_code, MIN(toYear(sale_time)) AS sale_year, MIN(toMonth(sale_time)) AS sale_month, receipt_no, SUM(goods_amt) AS sale_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(sale_year) AND r.store_nature = a.store_nature GROUP BY a.sale_year,a.sale_month,a.store_code,b.store_name ORDER BY a.store_code ASC, a.sale_year ASC,a.sale_month ASC; -- 1.1.5 线下每年前五店铺单笔订单金额分布 SELECT     toYear(a.saletime)  AS "年份",     a.store_code AS "店铺编码",     b.store_name AS "店铺名称",     CASE         WHEN amt <200 THEN '<200'         WHEN amt >=200 AND amt <500 THEN '200-500'         WHEN amt >=500 AND amt <1000 THEN '500-1000'         WHEN amt >=1000 AND amt <2500 THEN '1000-2500'         WHEN amt >=2500 AND amt <5000 THEN '2500-5000'         WHEN amt >=5000  THEN '≥5000'     END AS "单笔订单销售金额(元)",     SUM(CASE             WHEN a.brand_code IN ('JXH','SBZ') THEN a.order_amt             ELSE toDecimal64(toDecimal64(a.order_amt,4)*toDecimal64(r.settle_ratio,4),2)         END AS amt) AS "销售金额(元)" FROM(     SELECT         store_code,         receipt_no,         MIN(sale_time) AS saletime,         SUM(goods_amt) AS order_amt,         MIN(brand_code) AS brand_code,         argMin(store_nature,sale_time) AS store_nature     FROM         custom_offline_sale_return_settle_local     WHERE         sale_status = '销售'         AND store_code IN ('H056','B106','H2XF','F003','H05X','H66J','H53Z','S1538','B34W','S100001','S100006','S100011')     GROUP BY store_code, receipt_no     ) a lEFT JOIN(     SELECT         store_code,         store_name     FROM         custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY     "年份","店铺编码", "店铺名称","单笔订单销售金额(元)" ORDER BY     "年份","店铺编码",     CASE         WHEN "单笔订单销售金额(元)"='<200' THEN 1         WHEN "单笔订单销售金额(元)"='200-500'THEN 2         WHEN "单笔订单销售金额(元)"='500-1000' THEN 3         WHEN "单笔订单销售金额(元)"='1000-2500' THEN 4         WHEN "单笔订单销售金额(元)"='2500-5000' THEN 5         WHEN "单笔订单销售金额(元)"='≥5000' THEN 6     END ASC; -- 1.2.1 线下每年各产品数量、产品销售金额 SELECT a.sale_year AS "年份", a.barcode AS "商品编码", b.goods_desc AS "商品名称", SUM(a.qty) AS "产品数量", SUM(a.settle_amt) AS "销售金额(元)" FROM( SELECT toYear(sale_time) AS sale_year, barcode, toDecimal64(toDecimal64(goods_amt,4)*toDecimal64(settle_ratio,4),2) AS settle_amt, sale_status, qty FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' ) a LEFT JOIN( SELECT barcode, MAX(goods_desc) AS goods_desc FROM (SELECT barcode, goods_desc FROM dim_hkaudit_goods_mt WHERE country = 'CN' UNION ALL SELECT barcode, goods_desc FROM dim_hkaudit_goods_other_mt ) GROUP BY barcode ) b ON a.barcode = b.barcode GROUP BY a.sale_year,a.barcode,b.goods_desc ORDER BY "销售金额(元)" DESC LIMIT 1000; -- 2.1.1 线下每年各店铺所在省份销售金额、订单数量及占比 SELECT toYear(a.min_sale_time) AS "年份", b.province AS "省份", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.goods_amt ELSE toDecimal64(toDecimal64(a.goods_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "销售金额(元)", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量", ROUND("订单数量"/SUM("订单数量") OVER(PARTITION BY toYear(a.min_sale_time)),5) AS "订单占比" FROM( SELECT MIN(sale_time) AS min_sale_time, store_code, receipt_no, SUM(goods_amt) AS goods_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' AND sale_time >= '2022-01-01 00:00:00' AND sale_time <'2025-07-01 00:00:00' GROUP BY store_code,receipt_no )a LEFT JOIN( SELECT store_code, MIN(province) AS province FROM custom_store_info_all_local csial GROUP BY store_code )b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.min_sale_time)) AND r.store_nature = a.store_nature GROUP BY "年份","省份" ORDER BY "年份","销售金额(元)" DESC; -- 2.1.2 线下每年国内各店铺所在等级城市销售金额、订单数量及其占比 SELECT toYear(a.min_sale_time) AS "年份", CASE WHEN c.city_grade = '' THEN '其他' ELSE c.city_grade END AS "城市等级", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.goods_amt ELSE toDecimal64(toDecimal64(a.goods_amt,4)*toDecimal64(r.settle_ratio,4),2) END) AS "销售金额(元)", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量", ROUND("订单数量"/SUM("订单数量") OVER(PARTITION BY toYear(a.min_sale_time)),5) AS "订单占比" FROM( SELECT MIN(sale_time) AS min_sale_time, store_code, receipt_no, SUM(goods_amt) AS goods_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' AND sale_time >= '2022-01-01 00:00:00' AND sale_time <'2025-07-01 00:00:00' GROUP BY store_code,receipt_no )a LEFT JOIN( SELECT csial.store_code, corcl.city AS city FROM custom_store_info_all_local csial LEFT JOIN custom_offline_region_city_local corcl ON csial.city = corcl.region )b ON a.store_code = b.store_code LEFT JOIN( SELECT city, city_grade FROM custom_city_grade_local )c ON b.city = c.city LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.min_sale_time)) AND r.store_nature = a.store_nature GROUP BY "年份","城市等级" ORDER BY "年份","销售金额(元)" DESC; -- 2.1.3 线下每年国外各国家销售金额、订单数量及占比 SELECT toYear(a.min_sale_time) AS "年份", CASE WHEN b.country = 'MY' THEN '马来西亚' WHEN b.country = 'VN' THEN '越南' WHEN b.country = 'SG' THEN '新加坡' WHEN b.country = 'TH' THEN '泰国' WHEN b.country = 'ID' THEN '印度尼西亚' WHEN b.country = 'PH' THEN '菲律宾' END AS "国家", SUM(a.goods_amt*r.settle_ratio) AS "销售金额", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量", ROUND("订单数量"/SUM("订单数量") OVER(PARTITION BY toYear(a.min_sale_time)),5) AS "订单占比" FROM( SELECT MIN(sale_time) AS min_sale_time, store_code, receipt_no, SUM(goods_amt) AS goods_amt, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_abroad_sale_return_settle_local WHERE sale_status = '销售' AND sale_time >= '2022-01-01 00:00:00' AND sale_time <'2025-07-01 00:00:00' GROUP BY store_code,receipt_no )a LEFT JOIN( SELECT store_code, MIN(country) AS country FROM dim_hkaudit_store_other_mt GROUP BY store_code )b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.min_sale_time)) AND r.store_nature = a.store_nature GROUP BY "年份","国家" ORDER BY "年份","销售金额" DESC; -- 3.1.1 线下每年单笔订单金额分布 SELECT toYear(a.saletime) AS "年份", CASE WHEN amt <200 THEN '<200' WHEN amt >=200 AND amt <500 THEN '200-500' WHEN amt >=500 AND amt <1000 THEN '500-1000' WHEN amt >=1000 AND amt <2500 THEN '1000-2500' WHEN amt >=2500 AND amt <5000 THEN '2500-5000' WHEN amt >=5000 THEN '≥5000' END AS "单笔订单销售金额(元)", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.order_amt ELSE toDecimal64(toDecimal64(a.order_amt,4)*toDecimal64(r.settle_ratio,4),2) END AS amt) AS "销售金额(元)", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量" FROM( SELECT store_code, receipt_no, MIN(sale_time) AS saletime, SUM(goods_amt) AS order_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code, receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份", "单笔订单销售金额(元)" ORDER BY "年份", CASE WHEN "单笔订单销售金额(元)"='<200' THEN 1 WHEN "单笔订单销售金额(元)"='200-500'THEN 2 WHEN "单笔订单销售金额(元)"='500-1000' THEN 3 WHEN "单笔订单销售金额(元)"='1000-2500' THEN 4 WHEN "单笔订单销售金额(元)"='2500-5000' THEN 5 WHEN "单笔订单销售金额(元)"='1000-5000' THEN 6 WHEN "单笔订单销售金额(元)"='≥5000' THEN 7 END ASC; -- 3.1.2 线下每年各天订单数和销售金额 -- 各天 SELECT toYear(a.saletime) AS "年份", toDate(a.saletime) AS "日期", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.order_amt ELSE toDecimal64(toDecimal64(a.order_amt,4)*toDecimal64(r.settle_ratio,4),2) END AS amt) AS "销售金额", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量" FROM ( SELECT store_code, receipt_no, MIN(sale_time) AS saletime, SUM(goods_amt) AS order_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份","日期" order BY "年份","日期"; -- 3.1.2 线下每年各小时订单数和销售金额 -- 各小时 SELECT toYear(a.saletime) AS "年份", CONCAT(toString(HOUR(a.saletime)), '点到',toString(HOUR(a.saletime)+ 1), '点') AS "时间", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.order_amt ELSE toDecimal64(toDecimal64(a.order_amt,4)*toDecimal64(r.settle_ratio,4),2) END AS amt) AS "销售金额", COUNT(DISTINCT CONCAT(a.store_code,a.receipt_no)) AS "订单数量" FROM( SELECT store_code, receipt_no, MIN(sale_time) AS saletime, SUM(goods_amt) AS order_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份", "时间", HOUR(saletime) ORDER BY "年份", HOUR(saletime); -- 3.1.3 线下每年大促期间店铺销售金额、订单数量 SELECT CASE WHEN toDate(a.min_sale_time) BETWEEN '2022-01-01' AND '2022-01-05' THEN '海澜之家新年豪礼' WHEN toDate(a.min_sale_time) BETWEEN '2022-06-15' AND '2022-06-19' THEN '海澜之家父亲节' WHEN (toDate(a.min_sale_time) BETWEEN '2022-10-29' AND '2022-11-01') OR (toDate(a.min_sale_time) BETWEEN '2022-11-05' AND '2022-11-11') THEN '海澜之家线下门店双十一' WHEN toDate(a.min_sale_time) BETWEEN '2023-06-14' AND '2023-06-18' THEN '海澜之家2023父亲节' WHEN toDate(a.min_sale_time) BETWEEN '2023-11-03' AND '2023-11-12' THEN '海澜之家2023双11购物狂欢节' WHEN toDate(a.min_sale_time) BETWEEN '2024-01-26' AND '2024-01-28' THEN '海澜之家2024乘龙向上中国年' WHEN toDate(a.min_sale_time) BETWEEN '2024-02-01' AND '2024-02-09' THEN '海澜之家2024迎新春送豪礼' WHEN toDate(a.min_sale_time) BETWEEN '2024-06-13' AND '2024-06-16' THEN '海澜之家2024父亲节' WHEN toDate(a.min_sale_time) BETWEEN '2025-01-26' AND '2025-01-28' THEN '海澜之家2025央央好物' WHEN toDate(a.min_sale_time) BETWEEN '2025-06-11' AND '2025-06-15' THEN '海澜之家2025父亲节' END AS "促销活动名称", a.store_code AS "店铺编码", b.store_name AS "店铺名称", SUM(toDecimal64(toDecimal64(a.order_amt,4)*toDecimal64(r.settle_ratio,4),2)) AS "销售金额", COUNT(DISTINCT a.store_code, a.receipt_no) AS "订单数量" FROM( SELECT store_code, receipt_no, MIN(sale_time) AS min_sale_time, SUM(goods_amt) AS order_amt, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' AND brand_code = 'HLA' AND sale_time >= '2022-01-01 00:00:00' AND sale_time < '2025-07-01 00:00:00' AND ( (sale_time >= '2022-01-01 00:00:00' AND sale_time <= '2022-01-05 23:59:59') OR (sale_time >= '2022-06-15 00:00:00' AND sale_time <= '2022-06-19 23:59:59') OR (sale_time >= '2022-10-29 00:00:00' AND sale_time <= '2022-11-01 23:59:59') OR (sale_time >= '2022-11-05 00:00:00' AND sale_time <= '2022-11-11 23:59:59') OR (sale_time >= '2023-06-14 00:00:00' AND sale_time <= '2023-06-18 23:59:59') OR (sale_time >= '2023-11-03 00:00:00' AND sale_time <= '2023-11-12 23:59:59') OR (sale_time >= '2024-01-26 00:00:00' AND sale_time <= '2024-01-28 23:59:59') OR (sale_time >= '2024-02-01 00:00:00' AND sale_time <= '2024-02-09 23:59:59') OR (sale_time >= '2024-06-13 00:00:00' AND sale_time <= '2024-06-16 23:59:59') OR (sale_time >= '2025-01-26 00:00:00' AND sale_time <= '2025-01-28 23:59:59') OR (sale_time >= '2025-06-11 00:00:00' AND sale_time <= '2025-06-15 23:59:59') ) GROUP BY store_code, receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.min_sale_time)) AND r.store_nature = a.store_nature LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local ) b ON a.store_code = b.store_code WHERE CASE WHEN toDate(a.min_sale_time) BETWEEN '2022-01-01' AND '2022-01-05' THEN '海澜之家新年豪礼' WHEN toDate(a.min_sale_time) BETWEEN '2022-06-15' AND '2022-06-19' THEN '海澜之家父亲节' WHEN (toDate(a.min_sale_time) BETWEEN '2022-10-29' AND '2022-11-01') OR (toDate(a.min_sale_time) BETWEEN '2022-11-05' AND '2022-11-11') THEN '海澜之家线下门店双十一' WHEN toDate(a.min_sale_time) BETWEEN '2023-06-14' AND '2023-06-18' THEN '海澜之家2023父亲节' WHEN toDate(a.min_sale_time) BETWEEN '2023-11-03' AND '2023-11-12' THEN '海澜之家2023双11购物狂欢节' WHEN toDate(a.min_sale_time) BETWEEN '2024-01-26' AND '2024-01-28' THEN '海澜之家2024乘龙向上中国年' WHEN toDate(a.min_sale_time) BETWEEN '2024-02-01' AND '2024-02-09' THEN '海澜之家2024迎新春送豪礼' WHEN toDate(a.min_sale_time) BETWEEN '2024-06-13' AND '2024-06-16' THEN '海澜之家2024父亲节' WHEN toDate(a.min_sale_time) BETWEEN '2025-01-26' AND '2025-01-28' THEN '海澜之家2025央央好物' WHEN toDate(a.min_sale_time) BETWEEN '2025-06-11' AND '2025-06-15' THEN '海澜之家2025父亲节' END IS NOT NULL GROUP BY "促销活动名称", a.store_code, b.store_name ORDER BY MIN(toDate(a.min_sale_time)), "销售金额" DESC; -- 5.1.1 线下各店铺每年度退款金额、退款订单数量 SELECT toYear(a.saletime) AS "年份", a.store_code AS "店铺编码", MIN(b.store_name) AS "店铺名称", ABS(SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.refund_amt ELSE toDecimal64(toDecimal64(a.refund_amt,4)*toDecimal64(r.settle_ratio,4),2) END AS amt)) AS "退款金额(元)", COUNT(CONCAT(a.store_code,a.receipt_no)) AS "退款订单数" FROM( SELECT store_code, receipt_no, MIN(sale_time) AS saletime, SUM(goods_amt) AS refund_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '退款' GROUP BY store_code, receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code GROUP BY "年份","店铺编码" ORDER BY toYear(a.saletime) ASC, "退款金额(元)" DESC; -- 5.1.2 线下每年退款大于原销售的差异金额、订单数量 SELECT a.refund_year AS "年份", SUM(CASE WHEN CONCAT(b.store_code,b.receipt_no) <> '' THEN ABS(a.amt)- b.amt WHEN CONCAT(b.store_code,b.receipt_no) = '' THEN 0 END) AS "差异金额(有对应原单)", COUNT( CASE WHEN CONCAT(b.store_code,b.receipt_no) <> '' THEN CONCAT(a.store_code,a.receipt_no) WHEN CONCAT(b.store_code,b.receipt_no) = '' THEN NULL END) AS "订单数量(有对应原单)", SUM(CASE WHEN CONCAT(b.store_code,b.receipt_no) <> '' THEN 0 WHEN CONCAT(b.store_code,b.receipt_no) = '' THEN ABS(a.amt) END) AS "差异金额(无对应原单)", COUNT( CASE WHEN CONCAT(b.store_code,b.receipt_no) <> '' THEN NULL WHEN CONCAT(b.store_code,b.receipt_no) = '' THEN CONCAT(a.store_code,a.receipt_no) END) AS "订单数量(无对应原单)" FROM( SELECT toYear(MIN(sale_time)) AS refund_year, store_code, receipt_no, SUM(goods_amt) AS amt FROM custom_offline_sale_return_settle_local WHERE sale_status = '退款' GROUP BY store_code,receipt_no ) a LEFT JOIN( SELECT MIN(toYear(sale_time)), store_code, receipt_no, SUM(goods_amt) AS amt FROM custom_offline_sale_return_settle_local WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) b ON a.receipt_no = b.receipt_no AND a.store_code = b.store_code WHERE ABS(a.amt) > b.amt GROUP BY a.refund_year; -- 5.1.3 线下每年各月退款金额、退款订单数量 SELECT toYear(a.saletime) AS "年份", toMonth(a.saletime) AS "月份", ABS(SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.refund_amt ELSE toDecimal64(toDecimal64(a.refund_amt,4)*toDecimal64(r.settle_ratio,4),2) END AS amt)) AS "退款金额(元)", COUNT(CONCAT(a.store_code,a.receipt_no)) AS "订单数量" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS refund_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local cosrl WHERE sale_status = '退款' GROUP BY store_code,receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份","月份" ORDER BY "年份" ASC,"月份" ASC; -- 5.1.4 线下每年订单退款金额分布 SELECT toYear(a.saletime) AS "年份", CASE WHEN amt >=0 AND amt <200 THEN '<200' WHEN amt >=200 AND amt <500 THEN '200-500' WHEN amt >=500 AND amt <1000 THEN '500-1000' WHEN amt >=1000 AND amt <2500 THEN '1000-2500' WHEN amt >=2500 AND amt <5000 THEN '2500-5000' WHEN amt >=5000 THEN '≥5000' END AS "单笔订单退款金额(元)", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.order_amt ELSE toDecimal64(toDecimal64(a.order_amt,4)*toDecimal64(r.settle_ratio,4),2) END AS amt) AS "退款金额(元)", COUNT(CONCAT(a.store_code,a.receipt_no)) AS "订单数量" FROM( SELECT store_code, receipt_no, MIN(sale_time) AS saletime, ABS(SUM(goods_amt)) AS order_amt, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local WHERE sale_status = '退款' GROUP BY store_code,receipt_no ) a LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份", "单笔订单退款金额(元)" ORDER BY "年份", CASE WHEN "单笔订单退款金额(元)"='<200' THEN 1 WHEN "单笔订单退款金额(元)"='200-500'THEN 2 WHEN "单笔订单退款金额(元)"='500-1000' THEN 3 WHEN "单笔订单退款金额(元)"='1000-2500' THEN 4 WHEN "单笔订单退款金额(元)"='2500-5000' THEN 5 WHEN "单笔订单退款金额(元)"='1000-5000' THEN 6 WHEN "单笔订单退款金额(元)"='≥5000' THEN 7 END ASC; -- 6.1.1 线下每年净销售金额前100订单净销售金额 SELECT toYear(a.saletime) AS "年份", a.store_code AS "订单编号", b.store_name AS "店铺名称", a.receipt_no AS "订单号", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END AS amt) AS "净销售金额(元)" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY toYear(a.saletime),a.store_code,b.store_name,a.receipt_no ORDER BY "净销售金额(元)" DESC LIMIT 1000; -- 6.1.2 线下每年净销售金额前100订单各省份净销售金额 WITH order_list_top_100 AS( WITH order_list AS( SELECT toYear(a.saletime) AS sale_time, a.store_code AS store_code, b.store_name AS store_name, a.receipt_no AS receipt_no, SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END ) AS net_sale FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY toYear(a.saletime),a.store_code,b.store_name,a.receipt_no ) SELECT sale_time, store_code, receipt_no, net_sale FROM order_list WHERE sale_time = 2022 ORDER BY net_sale DESC LIMIT 100 UNION ALL SELECT sale_time, store_code , receipt_no, net_sale FROM order_list WHERE sale_time = 2023 ORDER BY net_sale DESC LIMIT 100 UNION ALL SELECT sale_time, store_code , receipt_no, net_sale FROM order_list WHERE sale_time = 2024 ORDER BY net_sale DESC LIMIT 100 UNION ALL SELECT sale_time, store_code , receipt_no , net_sale FROM order_list WHERE sale_time = 2025 ORDER BY net_sale DESC LIMIT 100 ) SELECT toYear(a.saletime) AS "年份", b.province AS "省份", SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END AS amt) AS "净销售金额(元)", COUNT(DISTINCT a.store_code,a.receipt_no) AS "订单数量" FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local cosrl WHERE CONCAT(store_code,receipt_no) IN (SELECT CONCAT(store_code,receipt_no) FROM order_list_top_100) GROUP BY store_code,receipt_no ) a LEFT JOIN( SELECT store_code, store_name, province FROM custom_store_info_all_local ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY "年份",b.province ORDER BY "年份","净销售金额(元)"DESC; -- 6.1.3 线下每年净销售金额前100订单各商品净销售金额 WITH order_list_top_100 AS( WITH order_list AS( SELECT toYear(a.saletime) AS sale_time, a.store_code AS store_code, b.store_name AS store_name, a.receipt_no AS receipt_no, SUM(CASE WHEN a.brand_code IN ('JXH','SBZ') THEN a.net_sale ELSE toDecimal64(toDecimal64(a.net_sale,4)*toDecimal64(r.settle_ratio,4),2) END ) AS net_sale FROM( SELECT MIN(sale_time) AS saletime, store_code, receipt_no, SUM(goods_amt) AS net_sale, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local GROUP BY store_code,receipt_no ) a LEFT JOIN( SELECT store_code, store_name FROM custom_store_info_all_local csial ) b ON a.store_code = b.store_code LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(a.saletime)) AND r.store_nature = a.store_nature GROUP BY toYear(a.saletime),a.store_code,b.store_name,a.receipt_no ) SELECT sale_time, store_code, receipt_no, net_sale FROM order_list WHERE sale_time = 2022 ORDER BY net_sale DESC LIMIT 100 UNION ALL SELECT sale_time, store_code , receipt_no, net_sale FROM order_list WHERE sale_time = 2023 ORDER BY net_sale DESC LIMIT 100 UNION ALL SELECT sale_time, store_code , receipt_no, net_sale FROM order_list WHERE sale_time = 2024 ORDER BY net_sale DESC LIMIT 100 UNION ALL SELECT sale_time, store_code , receipt_no , net_sale FROM order_list WHERE sale_time = 2025 ORDER BY net_sale DESC LIMIT 100 ) SELECT toYear(a.sale_time) AS "年份", a.barcode AS "商品编码", CASE WHEN b.goods_desc = '' THEN a.goods_name WHEN b.goods_desc <> '' THEN b.goods_desc END AS "商品名称", SUM(a.qty) AS "产品数量", SUM(toDecimal64(toDecimal64(a.goods_amt,4)*toDecimal64(a.settle_ratio,4),2)) AS "净销售金额(元)" FROM( SELECT * FROM custom_offline_sale_return_settle_local cosrl WHERE CONCAT(store_code,receipt_no) IN (SELECT CONCAT(store_code,receipt_no) FROM order_list_top_100) ) a LEFT JOIN( SELECT barcode, MAX(goods_desc) AS goods_desc FROM (SELECT barcode, goods_desc FROM dim_hkaudit_goods_mt WHERE country = 'CN' UNION ALL SELECT barcode, goods_desc FROM dim_hkaudit_goods_other_mt) GROUP BY barcode ) b ON a.barcode = b.barcode GROUP BY toYear(a.sale_time),a.barcode,"商品名称" ORDER BY "年份","净销售金额(元)" DESC; -- 6.2.1线下22年订单支付金额前20名注册用户的销售金额、订单数量 SELECT '2022' AS "年份", a.member_id AS "注册用户ID", SUM(CASE WHEN c.brand_code IN ('SBZ','JXH') THEN c.amt ELSE toDecimal64(toDecimal64(c.amt,4)*toDecimal64(r.settle_ratio,4),2) END ) AS "销售金额(元)", COUNT( DISTINCT CASE WHEN c.receipt_no = '' THEN NULL ELSE CONCAT(c.store_code,c.receipt_no) END) AS "订单数量" FROM( SELECT member_register_time AS r_time, member_id FROM dwd_basic_all_vip_info_dd dbavid WHERE SUBSTR(member_register_time,1,4) IN ('2022') ) a LEFT JOIN( SELECT MIN(member_id) AS member_id , bill_no FROM dwd_basic_all_vip_point_dd WHERE bill_no <>'' AND SUBSTR(change_time,1,4) IN ('2022') GROUP BY bill_no ) b ON a.member_id = b.member_id LEFT JOIN( SELECT receipt_no, SUM(goods_amt) AS amt, MIN(sale_time) AS saletime, store_code, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local cosrl WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) c ON b.bill_no = c.receipt_no LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(c.saletime)) AND r.store_nature = c.store_nature GROUP BY a.member_id ORDER BY SUM(c.amt) DESC LIMIT 20; -- 6.2.1线下23年订单支付金额前20名注册用户的销售金额、订单数量 SELECT '2023' AS "年份", a.member_id AS "注册用户ID", SUM(CASE WHEN c.brand_code IN ('SBZ','JXH') THEN c.amt ELSE toDecimal64(toDecimal64(c.amt,4)*toDecimal64(r.settle_ratio,4),2) END ) AS "销售金额(元)", COUNT( DISTINCT CASE WHEN c.receipt_no = '' THEN NULL ELSE CONCAT(c.store_code,c.receipt_no) END) AS "订单数量" FROM( SELECT member_register_time AS r_time, member_id FROM dwd_basic_all_vip_info_dd dbavid WHERE SUBSTR(member_register_time,1,4) IN ('2023') ) a LEFT JOIN( SELECT MIN(member_id) AS member_id , bill_no FROM dwd_basic_all_vip_point_dd WHERE bill_no <>'' AND SUBSTR(change_time,1,4) IN ('2023') GROUP BY bill_no ) b ON a.member_id = b.member_id LEFT JOIN( SELECT receipt_no, SUM(goods_amt) AS amt, MIN(sale_time) AS saletime, store_code, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local cosrl WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) c ON b.bill_no = c.receipt_no LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(c.saletime)) AND r.store_nature = c.store_nature GROUP BY a.member_id ORDER BY SUM(c.amt) DESC LIMIT 20; -- 6.2.1线下24年订单支付金额前20名注册用户的销售金额、订单数量 SELECT '2024' AS "年份", a.member_id AS "注册用户ID", SUM(CASE WHEN c.brand_code IN ('SBZ','JXH') THEN c.amt ELSE toDecimal64(toDecimal64(c.amt,4)*toDecimal64(r.settle_ratio,4),2) END ) AS "销售金额(元)", COUNT( DISTINCT CASE WHEN c.receipt_no = '' THEN NULL ELSE CONCAT(c.store_code,c.receipt_no) END) AS "订单数量" FROM( SELECT member_register_time AS r_time, member_id FROM dwd_basic_all_vip_info_dd dbavid WHERE SUBSTR(member_register_time,1,4) IN ('2024') ) a LEFT JOIN( SELECT MIN(member_id) AS member_id , bill_no FROM dwd_basic_all_vip_point_dd WHERE bill_no <>'' AND SUBSTR(change_time,1,4) IN ('2024') GROUP BY bill_no ) b ON a.member_id = b.member_id LEFT JOIN( SELECT receipt_no, SUM(goods_amt) AS amt, MIN(sale_time) AS saletime, store_code, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local cosrl WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) c ON b.bill_no = c.receipt_no LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(c.saletime)) AND r.store_nature = c.store_nature GROUP BY a.member_id ORDER BY SUM(c.amt) DESC LIMIT 20; -- 6.2.1线下25年订单支付金额前20名注册用户的销售金额、订单数量 SELECT '2025' AS "年份", a.member_id AS "注册用户ID", SUM(CASE WHEN c.brand_code IN ('SBZ','JXH') THEN c.amt ELSE toDecimal64(toDecimal64(c.amt,4)*toDecimal64(r.settle_ratio,4),2) END ) AS "销售金额(元)", COUNT( DISTINCT CASE WHEN c.receipt_no = '' THEN NULL ELSE CONCAT(c.store_code,c.receipt_no) END) AS "订单数量" FROM( SELECT member_register_time AS r_time, member_id FROM dwd_basic_all_vip_info_dd dbavid WHERE SUBSTR(member_register_time,1,7) IN ('2025-01','2025-02','2025-03','2025-04','2025-05','2025-06') ) a LEFT JOIN( SELECT MIN(member_id) AS member_id , bill_no FROM dwd_basic_all_vip_point_dd WHERE bill_no <>'' AND SUBSTR(change_time,1,7) IN ('2025-01','2025-02','2025-03','2025-04','2025-05','2025-06') GROUP BY bill_no ) b ON a.member_id = b.member_id LEFT JOIN( SELECT receipt_no, SUM(goods_amt) AS amt, MIN(sale_time) AS saletime, store_code, MIN(brand_code) AS brand_code, argMin(store_nature,sale_time) AS store_nature FROM custom_offline_sale_return_settle_local cosrl WHERE sale_status = '销售' GROUP BY store_code,receipt_no ) c ON b.bill_no = c.receipt_no LEFT JOIN custom_settle_ratio_local r ON r.settle_year = toString(toYear(c.saletime)) AND r.store_nature = c.store_nature GROUP BY a.member_id ORDER BY SUM(c.amt) DESC LIMIT 20;