From 3097dc12bd565feb121d3e4651ec343edfd0bcb2 Mon Sep 17 00:00:00 2001 From: zhumr Date: Thu, 23 Oct 2025 19:51:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E5=88=86=E6=9E=90=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E6=B1=87=E6=80=BB-=E7=BA=BF=E4=B8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2 执行SQL/CAATS-01-04 分析指标汇总-线下.txt | 1758 +++++++++++++++++ 1 file changed, 1758 insertions(+) create mode 100644 底稿/附件/2 执行SQL/CAATS-01-04 分析指标汇总-线下.txt diff --git a/底稿/附件/2 执行SQL/CAATS-01-04 分析指标汇总-线下.txt b/底稿/附件/2 执行SQL/CAATS-01-04 分析指标汇总-线下.txt new file mode 100644 index 0000000..0fc9b24 --- /dev/null +++ b/底稿/附件/2 执行SQL/CAATS-01-04 分析指标汇总-线下.txt @@ -0,0 +1,1758 @@ +-- 三、数据分析 +---------------------------- +-- 分析条件一 +---------------------------- +-- 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; + +