调整查询sql

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