SQL语句更新

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

90
SQL.sql
View File

@@ -1,26 +1,80 @@
-- 线上店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价 -- 线上店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价
SELECT SELECT
sales.store_code as '店铺编码', s.,
year(sales.order_date) AS '年份', s.,
round(sum(sales.order_settle_amt),2) as '销售金额', ROUND(s.,2) AS '销售金额',
COUNT(sales.platform_order_no) + s.,
SUM(LENGTH(sales.platform_order_no) - LENGTH(REPLACE(sales.platform_order_no, ',', ''))) as '订单数量', r.退,
round(sum(change.special_barcode_amt),2) as '退款金额', r.退,
count(refund.platform_order_no) as '退款订单数', ROUND(s./s.,2) AS '订单均价'
round(sum(sales.order_settle_amt)/count(sales.platform_order_no),2) as '订单均价' FROM(
FROM SELECT
dwd_trade_hkaudit_ecommerce_sale_mt sales store_code AS '店铺编码',
left join dwd_trade_hkaudit_ecommerce_sale_return_mt refund YEAR(order_date) AS '年份',
on sales.platform_order_no = refund.platform_order_no SUM(order_settle_amt) AS '销售金额',
left join dwd_trade_hkaudit_ecommerce_sale_change_mt change -- 针对并单号情况,统计总行数加逗号个数得到总订单数量
on sales.platform_order_no = change.platform_order_no COUNT(platform_order_no) +
SUM(LENGTH(platform_order_no) - LENGTH(REPLACE(platform_order_no, ',', ''))) AS '订单数量'
dwd_trade_hkaudit_ecommerce_sale_mt
WHERE WHERE
sales.order_date >= '2022-01-01 00:00:00' order_date >= '2022-01-01 00:00:00'
AND sales.order_date <'2025-07-31 00:00:00' AND order_date <'2025-07-01 00:00:00'
GROUP BY GROUP BY
sales.store_code, year(sales.order_date) 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 ORDER BY
sales.store_code ASC, ASC ASC, DESC;
-- 线下店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价 -- 线下店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价