SQL语句更新

This commit is contained in:
2025-09-19 18:46:09 +08:00
parent 2815f094cf
commit 0574e30a52

94
SQL.sql
View File

@@ -1,26 +1,80 @@
-- 线上店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价
SELECT
sales.store_code as '店铺编码',
year(sales.order_date) AS '年份',
round(sum(sales.order_settle_amt),2) as '销售金额',
COUNT(sales.platform_order_no) +
SUM(LENGTH(sales.platform_order_no) - LENGTH(REPLACE(sales.platform_order_no, ',', ''))) as '订单数量',
round(sum(change.special_barcode_amt),2) as '退款金额',
count(refund.platform_order_no) as '退款订单数',
round(sum(sales.order_settle_amt)/count(sales.platform_order_no),2) as '订单均价'
FROM
dwd_trade_hkaudit_ecommerce_sale_mt sales
left join dwd_trade_hkaudit_ecommerce_sale_return_mt refund
on sales.platform_order_no = refund.platform_order_no
left join dwd_trade_hkaudit_ecommerce_sale_change_mt change
on sales.platform_order_no = change.platform_order_no
WHERE
sales.order_date >= '2022-01-01 00:00:00'
AND sales.order_date <'2025-07-31 00:00:00'
GROUP BY
sales.store_code, year(sales.order_date)
s.,
s.,
ROUND(s.,2) AS '销售金额',
s.,
r.退,
r.退,
ROUND(s./s.,2) AS '订单均价'
FROM(
SELECT
store_code AS '店铺编码',
YEAR(order_date) AS '年份',
SUM(order_settle_amt) AS '销售金额',
-- 针对并单号情况,统计总行数加逗号个数得到总订单数量
COUNT(platform_order_no) +
SUM(LENGTH(platform_order_no) - LENGTH(REPLACE(platform_order_no, ',', ''))) AS '订单数量'
dwd_trade_hkaudit_ecommerce_sale_mt
WHERE
order_date >= '2022-01-01 00:00:00'
AND order_date <'2025-07-01 00:00:00'
GROUP BY
store_code,YEAR(order_date)
) s --
LEFT JOIN(
SELECT
YEAR(order_date) AS '年份',
store_code AS '店铺编码',
ROUND(SUM(refund.amount)+SUM(change.amount),2) AS '退款金额',
COUNT(refund.platform_order_no) AS '退款订单数'
FROM(
SELECT
-- 将拆分后的单个订单号作为分组和查询的键
single_order_id AS platform_order_no,
MIN(store_code) AS store_code,
MIN(order_date) AS order_date
FROM(
SELECT
store_code,
platform_order_no,
order_date,
splitByChar(',', platform_order_no) AS order_id_array
FROM dwd_trade_hkaudit_ecommerce_sale_mt
WHERE
order_date >= '2022-01-01 00:00:00'
AND order_date <'2025-07-01 00:00:00'
)
-- 使用arrayJoin将数组中的每个元素展开为一行
ARRAY JOIN order_id_array AS single_order_id
GROUP BY single_order_no
) sales
LEFT JOIN(
SELECT
platform_order_no,
SUM(return_goods_amt)
FROM
dwd_trade_hkaudit_ecommerce_sale_return_mt
GROUP BY
platform_order_no
) refund
ON sales.platform_order_no = refund.platform_order_no
LEFT JOIN(
SELECT
platform_order_no,
SUM(special_barcode_amt) AS amount
FROM
dwd_trade_hkaudit_ecommerce_sale_change_mt
) change
ON sales.platform_order_no = change.platform_order_no
WHERE
refund.platform_order_no IS NOT NULL
GROUP BY
store_code,YEAR(order_date)
) r -- 退款
ON s. = r. AND s. = r.
ORDER BY
sales.store_code ASC, ASC
ASC, DESC;
-- 线下店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价