调整查询sql

This commit is contained in:
2026-03-24 16:41:07 +08:00
parent aae76442ec
commit 83d7fe2d87
+55 -22
View File
@@ -40,7 +40,6 @@ METRIC_CONFIGS = {
field_suffix="总销售额",
sql_template="""
SET TIMEZONE = 'Asia/Shanghai';
WITH base_data AS (
SELECT
f.支付时间::DATE AS 统计日期,
@@ -48,7 +47,7 @@ WITH base_data AS (
s.店铺名称 AS 原始店铺名称,
p.品牌名称,
f.业务模式,
f.实付分摊金额 AS 指标金额
f.实付分摊金额
FROM analytics_layer.fact_sales f
LEFT JOIN analytics_layer.dim_shop s
ON f.店铺主键 = s.店铺主键
@@ -65,6 +64,7 @@ brand_split AS (
原始店铺名称,
业务模式,
CASE
WHEN 店铺主键 IN (1,28,29) AND 品牌名称 LIKE '羽心堂'
THEN 原始店铺名称 || '_羽心堂'
WHEN 店铺主键 IN (1,28,29) AND 品牌名称 LIKE '春回盏'
@@ -77,32 +77,38 @@ brand_split AS (
THEN 原始店铺名称 || '_BROKEN ZOO'
WHEN 店铺主键 IN (1,28,29)
THEN 原始店铺名称 || '_其他'
WHEN 店铺主键 IN (3,9) AND 品牌名称 LIKE '羽心堂'
THEN 原始店铺名称 || '_羽心堂'
WHEN 店铺主键 IN (3,9) AND 品牌名称 LIKE 'Mama Mujer'
THEN 原始店铺名称 || '_Mama Mujer'
WHEN 店铺主键 IN (3,9)
THEN 原始店铺名称 || '_其他'
WHEN 店铺主键 IS NULL OR 原始店铺名称 IS NULL
THEN '分销/SEEDING'
ELSE 原始店铺名称
END AS 店铺名称,
指标金额
实付分摊金额
FROM base_data
),
shop_brand_detail AS (
SELECT
统计日期,
店铺主键,
店铺名称,
SUM(指标金额) AS 指标值
SUM(实付分摊金额) AS 总销售额
FROM brand_split
GROUP BY 1,2,3
)
SELECT
统计日期,
店铺名称,
指标值
总销售额
FROM shop_brand_detail
WHERE NOT (
店铺主键 IN (1,9,28,29)
@@ -111,29 +117,28 @@ WHERE NOT (
UNION ALL
-- 店铺合计(使用 dim_shop 店铺名)
SELECT
统计日期,
原始店铺名称 AS 店铺名称,
SUM(指标金额)
SUM(实付分摊金额)
FROM base_data
WHERE 店铺主键 IN (1,28,29,3)
GROUP BY 1,2
UNION ALL
-- 权益金(充值购物金单独统计)
SELECT
统计日期,
CASE
WHEN 业务模式 IN ('三方结算','三方分销')
THEN 原始店铺名称 || '_三方'
ELSE 原始店铺名称 || '_自营'
END AS 店铺名称,
SUM(指标金额)
原始店铺名称 || '_权益金' AS 店铺名称,
SUM(实付分摊金额) AS 总销售额
FROM base_data
WHERE 店铺主键 = 1
WHERE 店铺主键 IN (5,11,14,22,26)
AND 业务模式 = '充值购物金'
GROUP BY 1,2
ORDER BY 统计日期 DESC, 指标值 DESC;
ORDER BY 统计日期 DESC, 总销售额 DESC;
""",
),
"refund": MetricConfig(
@@ -142,14 +147,14 @@ ORDER BY 统计日期 DESC, 指标值 DESC;
field_suffix="退款额",
sql_template="""
SET TIMEZONE = 'Asia/Shanghai';
WITH base_data AS (
SELECT
f.完结时间::DATE AS 统计日期,
f.店铺主键,
f.平台订单号,
s.店铺名称 AS 原始店铺名称,
p.品牌名称,
f.退款金额 AS 指标金额
f.退款金额
FROM analytics_layer.fact_returns f
LEFT JOIN analytics_layer.dim_shop s
ON f.店铺主键 = s.店铺主键
@@ -159,12 +164,20 @@ WITH base_data AS (
WHERE f.完结时间 >= %(start_ts)s
AND f.完结时间 < %(end_ts_exclusive)s
),
recharge_orders AS (
SELECT DISTINCT 平台订单号, 店铺主键
FROM analytics_layer.fact_sales
WHERE 业务模式 = '充值购物金'
),
brand_split AS (
SELECT
统计日期,
店铺主键,
原始店铺名称,
CASE
WHEN 店铺主键 IN (1,28,29) AND 品牌名称 LIKE '羽心堂'
THEN 原始店铺名称 || '_羽心堂'
WHEN 店铺主键 IN (1,28,29) AND 品牌名称 LIKE '春回盏'
@@ -177,49 +190,69 @@ brand_split AS (
THEN 原始店铺名称 || '_BROKEN ZOO'
WHEN 店铺主键 IN (1,28,29)
THEN 原始店铺名称 || '_其他'
WHEN 店铺主键 IN (3,9) AND 品牌名称 LIKE '羽心堂'
THEN 原始店铺名称 || '_羽心堂'
WHEN 店铺主键 IN (3,9) AND 品牌名称 LIKE 'Mama Mujer'
THEN 原始店铺名称 || '_Mama Mujer'
WHEN 店铺主键 IN (3,9)
THEN 原始店铺名称 || '_其他'
WHEN 店铺主键 IS NULL OR 原始店铺名称 IS NULL
THEN '分销/SEEDING'
ELSE 原始店铺名称
END AS 店铺名称,
指标金额
退款金额
FROM base_data
),
shop_brand_detail AS (
SELECT
统计日期,
店铺主键,
店铺名称,
SUM(指标金额) AS 指标值
SUM(退款金额) AS 总退款金额
FROM brand_split
GROUP BY 1,2,3
)
SELECT
统计日期,
店铺名称,
指标值
总退款金额
FROM shop_brand_detail
WHERE NOT (
店铺主键 IN (1,9,28,29)
店铺主键 IN (1,9,28,29)
AND 店铺名称 LIKE '%%_其他'
)
UNION ALL
-- 店铺合计
SELECT
统计日期,
原始店铺名称 AS 店铺名称,
SUM(指标金额)
SUM(退款金额) AS 总退款金额
FROM base_data
WHERE 店铺主键 IN (1,28,29,3)
GROUP BY 1,2
ORDER BY 统计日期 DESC, 指标值 DESC;
UNION ALL
-- 权益金退款
SELECT
r.统计日期,
r.原始店铺名称 || '_权益金' AS 店铺名称,
SUM(r.退款金额) AS 总退款金额
FROM base_data r
JOIN recharge_orders ro
ON r.平台订单号 = ro.平台订单号
AND r.店铺主键 = ro.店铺主键
WHERE r.店铺主键 IN (5,11,14,22,26)
GROUP BY 1,2
ORDER BY 统计日期 DESC, 总退款金额 DESC;
""",
),
}