SQL语句更新
This commit is contained in:
94
SQL.sql
94
SQL.sql
@@ -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;
|
||||
|
||||
|
||||
-- 线下店铺年度销售金额、订单数量、退款金额、退款订单数、订单均价
|
||||
|
Reference in New Issue
Block a user