Files
heilan/底稿/附件/2 执行SQL/CAATS-01-04 分析指标汇总-线下.txt

1759 lines
52 KiB
Plaintext
Raw Normal View History

2025-10-23 19:51:00 +08:00
-- 三、数据分析
----------------------------
-- 分析条件一
----------------------------
-- 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;