From 6f38209efefbac49c66c3d902265027ffdbadf44 Mon Sep 17 00:00:00 2001 From: BXY0414 <1079823339@qq.com> Date: Tue, 28 Apr 2026 18:21:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=80=80=E6=AC=BE=E9=A2=9D?= =?UTF-8?q?=E8=AE=A1=E7=AE=97=20=E6=B7=BB=E5=8A=A0=E9=94=80=E5=94=AE?= =?UTF-8?q?=E4=B8=BA=E5=B7=B2=E5=8F=96=E6=B6=88=E3=80=81=E5=B7=B2=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E3=80=81=E4=BA=A4=E6=98=93=E5=85=B3=E9=97=AD=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=E9=80=80=E6=AC=BE=E4=B8=AD=E6=9C=AA=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=88=B0=E7=9A=84=E9=87=91=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- project_bitable_common.py | 70 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 65 insertions(+), 5 deletions(-) diff --git a/project_bitable_common.py b/project_bitable_common.py index f1bff57..00fcb90 100644 --- a/project_bitable_common.py +++ b/project_bitable_common.py @@ -147,7 +147,45 @@ ORDER BY 统计日期 DESC, 总销售额 DESC; field_suffix="退款额", sql_template=""" SET TIMEZONE = 'Asia/Shanghai'; -WITH base_data AS ( +WITH sales_base AS ( + SELECT + fs.*, + TRIM(fs."平台订单号") AS "原平台订单号", + split_part(TRIM(fs."平台订单号"), '-', 1) AS "主订单号" + FROM analytics_layer.fact_sales fs + WHERE fs."订单状态" IN ('已关闭', '已取消', '交易关闭') + AND NULLIF(TRIM(fs."平台订单号"), '') IS NOT NULL + AND fs."支付时间" IS NOT NULL + AND fs."支付时间" >= %(start_ts)s + AND fs."支付时间" < %(end_ts_exclusive)s +), + +missing_order_keys AS ( + SELECT DISTINCT + sb."主订单号" + FROM sales_base sb + WHERE NOT EXISTS ( + SELECT 1 + FROM analytics_layer.fact_returns fr + WHERE split_part(TRIM(fr."平台订单号"), '-', 1) = sb."主订单号" + AND NULLIF(TRIM(fr."平台订单号"), '') IS NOT NULL + ) +), + +missing_return_sales AS ( + SELECT + sb."支付时间"::DATE AS 统计日期, + sb."店铺主键", + SUM(sb."实付分摊金额") AS 补充退款金额 + FROM sales_base sb + JOIN missing_order_keys mok + ON sb."主订单号" = mok."主订单号" + GROUP BY + sb."支付时间"::DATE, + sb."店铺主键" +), + +base_data AS ( SELECT f.完结时间::DATE AS 统计日期, f.店铺主键, @@ -215,12 +253,13 @@ shop_brand_detail AS ( SUM(退款金额) AS 总退款金额 FROM brand_split GROUP BY 1,2,3 -) +), +all_amount AS ( SELECT 统计日期, 店铺名称, - 总退款金额 + 总退款金额 AS 金额 FROM shop_brand_detail WHERE NOT ( 店铺主键 IN (1,9,28,29) @@ -233,7 +272,7 @@ UNION ALL SELECT 统计日期, 原始店铺名称 AS 店铺名称, - SUM(退款金额) AS 总退款金额 + SUM(退款金额) AS 金额 FROM base_data WHERE 店铺主键 IN (1,28,29,3) GROUP BY 1,2 @@ -244,7 +283,7 @@ UNION ALL SELECT r.统计日期, r.原始店铺名称 || '_权益金' AS 店铺名称, - SUM(r.退款金额) AS 总退款金额 + SUM(r.退款金额) AS 金额 FROM base_data r JOIN recharge_orders ro ON r.平台订单号 = ro.平台订单号 @@ -252,6 +291,27 @@ JOIN recharge_orders ro WHERE r.店铺主键 IN (5,11,14,22,26) GROUP BY 1,2 +UNION ALL + +SELECT + mrs.统计日期, + COALESCE(s.店铺名称, '未知店铺') AS 店铺名称, + SUM(mrs.补充退款金额) AS 金额 +FROM missing_return_sales mrs +LEFT JOIN analytics_layer.dim_shop s + ON mrs.店铺主键 = s.店铺主键 +GROUP BY 1,2 +) + +SELECT + 统计日期, + 店铺名称, + SUM(金额) AS 总退款金额 +FROM all_amount +GROUP BY + 统计日期, + 店铺名称 + ORDER BY 统计日期 DESC, 总退款金额 DESC; """, ),