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

1759 lines
52 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 三、数据分析
----------------------------
-- 分析条件一
----------------------------
-- 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-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 "净销售金额(元)"
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-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-3 线下各店铺不关联原单每年度净销售金额
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-4 线下各店铺不关联原单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-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-2 按品牌关联原单统计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-3 线下按品牌不关联原单按年统计净销售金额
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-4 线下按品牌不关联原单统计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-5 线下海外品牌关联原单年度净销售
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-6 线下海外品牌不关联原单年度净销售
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-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-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 "销售金额(元)",
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;