ai_member_xiaoxi/memory/2026-04-15-refund-sql.md
2026-04-15 18:52:01 +08:00

13 KiB
Raw Blame History

Session: 2026-04-15 03:28:48 UTC

  • Session Key: agent:main:feishu:direct:ou_e63ce6b760ad39382852472f28fbe2a2
  • Session ID: 1e739eff-af7b-4269-b5ae-f6844bb12402
  • Source: feishu

Conversation Summary

user: System: [2026-04-15 10:30:27 GMT+8] Feishu[xiaoxi] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52dbcae950bcb2cf481a8a167ec]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52dbcae950bcb2cf481a8a167ec",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 10:30 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

给我看看你查询退费订单的sql assistant: 这是查询4月退费情况的核心SQL

WITH april_orders AS (
    -- 筛选4月成交的有效订单剔除测试账号
    SELECT 
        o.id AS order_id,
        o.out_trade_no,
        o.pay_amount_int,
        o.order_status,
        o.created_at::date AS order_date
    FROM bi_vala_order o
    JOIN bi_vala_app_account a ON o.account_id = a.id
    WHERE a.status = 1                    -- 仅保留正式账号
      AND o.created_at >= '2026-04-01'
      AND o.created_at < '2026-04-16'
      AND o.pay_amount_int > 0            -- 排除0元订单
),
refunded AS (
    -- 从4月订单中筛选已退费的订单
    SELECT DISTINCT ON (ao.order_id)
        ao.order_id,
        ao.order_date,
        ao.pay_amount_int,
        r.refund_amount_int
    FROM april_orders ao
    JOIN bi_refund_order r 
        ON ao.out_trade_no = r.out_trade_no  -- 通过交易单号关联退费表
    WHERE r.status = 3                        -- 退费成功
      AND ao.order_status = 4                 -- 订单状态为已退款
)
SELECT 
    (SELECT COUNT(*) FROM april_orders) AS 总订单数,
    (SELECT ROUND(SUM(pay_amount_int)/100.0, 2) FROM april_orders) AS GMV_元,
    (SELECT COUNT(DISTINCT order_id) FROM refunded) AS 退费订单数,
    (SELECT ROUND(SUM(refund_amount_int)/100.0, 2) FROM refunded) AS 退费金额_元,
    -- GSV = GMV - 退费金额
    (SELECT ROUND(SUM(pay_amount_int)/100.0, 2) FROM april_orders) 
      - COALESCE((SELECT ROUND(SUM(refund_amount_int)/100.0, 2) FROM refunded), 0) AS GSV_元,
    -- 退费率 = 退费订单数 / 总订单数
    ROUND(
        (SELECT COUNT(DISTINCT order_id) FROM refunded)::numeric 
        / (SELECT COUNT(*) FROM april_orders)::numeric * 100, 1
    ) AS 退费率;

关键逻辑说明:

  1. 测试账号剔除bi_vala_app_account.status = 1 只保留正式用户
  2. 退费双重校验:退费表 status = 3(退费成功)且 订单表 order_status = 4(已退款),缺一不可
  3. 关联方式:两表通过 out_trade_no(交易单号)关联
  4. 金额换算pay_amount_intrefund_amount_int 都是分为单位除以100转元 user: System: [2026-04-15 10:33:19 GMT+8] Feishu[xiaoxi] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52dbc02b18a0b2d41d5df629fee]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52dbc02b18a0b2d41d5df629fee",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 10:33 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

这440人中有多少人是仍然有未退费的订单的用户共涉及到多少笔退费订单 assistant: 440位退费用户中

  • 54 位用户仍持有未退费的订单(即部分退费,还保留了其他订单)
  • 这54人共涉及 60 笔退费订单
  • 剩余 386 位用户是4月成交的订单已全部退费的

也就是说大部分退费用户87.7%是全部退完了只有12.3%的用户是退了部分、还留着其他订单的情况。需要进一步分析这些用户的订单明细吗? user: System: [2026-04-15 10:35:13 GMT+8] Feishu[default] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52dbd8cfe490b4a9110028622e9]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52dbd8cfe490b4a9110028622e9",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 10:35 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

给我看看这一次的sql assistant:

WITH april_orders AS (
    SELECT 
        o.id AS order_id,
        o.out_trade_no,
        o.account_id,
        o.pay_amount_int,
        o.order_status
    FROM bi_vala_order o
    JOIN bi_vala_app_account a ON o.account_id = a.id
    WHERE a.status = 1
      AND o.created_at >= '2026-04-01'
      AND o.created_at < '2026-04-16'
      AND o.pay_amount_int > 0
),
-- 第一步找出4月所有退费用户440人
refund_users AS (
    SELECT DISTINCT ao.account_id
    FROM april_orders ao
    JOIN bi_refund_order r ON ao.out_trade_no = r.out_trade_no
    WHERE r.status = 3 AND ao.order_status = 4
),
-- 第二步从440人中筛选仍有未退费订单的用户
-- 条件该用户在4月订单中存在 order_status != 4 的订单
users_with_active_orders AS (
    SELECT DISTINCT ao.account_id
    FROM april_orders ao
    WHERE ao.account_id IN (SELECT account_id FROM refund_users)
      AND ao.order_status != 4   -- 非已退款 = 未退费
),
-- 第三步:统计这些用户对应的退费订单数
refund_orders_of_active_users AS (
    SELECT DISTINCT ao.order_id, ao.account_id
    FROM april_orders ao
    JOIN bi_refund_order r ON ao.out_trade_no = r.out_trade_no
    WHERE r.status = 3 
      AND ao.order_status = 4
      AND ao.account_id IN (SELECT account_id FROM users_with_active_orders)
)
SELECT 
    (SELECT COUNT(*) FROM refund_users) AS 退费总用户数,
    (SELECT COUNT(*) FROM users_with_active_orders) AS 仍有未退费订单的用户数,
    (SELECT COUNT(*) FROM refund_orders_of_active_users) AS 这些用户的退费订单数;

逻辑说明:

  1. april_orders和之前一样4月全部有效订单剔除测试账号
  2. refund_users从中找出退费成功的用户440人
  3. users_with_active_orders在这440人中筛选出在4月订单里还存在 order_status != 4(未退款)订单的用户 → 即"退了一部分但还保留了其他订单"的用户
  4. refund_orders_of_active_users:统计这批用户对应的退费订单数量 user: System: [2026-04-15 10:59:05 GMT+8] Feishu[default] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52dba1492c98b215297a08c23f8]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52dba1492c98b215297a08c23f8",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 10:59 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

剩余的386个用户中有多少是key_from中带有daren字样的 assistant: 386位全部退费的用户中379位的订单 key_from 带有 daren 字样(达人直播渠道),占比高达 98.2%

也就是说4月全部退完的用户几乎都来自达人直播渠道剩下仅7位来自其他渠道。需要进一步看达人渠道的细分来源吗 user: System: [2026-04-15 11:00:40 GMT+8] Feishu[default] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52dbbbba04a4b22566e2b3443ab]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52dbbbba04a4b22566e2b3443ab",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 11:00 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

这379位用户有多少先购课后完成一节课还是先完成一节课后购 assistant:

好问题我需要对比这379位用户的首次购课时间首次完成课时时间的先后关系。

根据MEMORY.md中的学习数据逻辑课时完成记录在分表 bi_user_chapter_play_record_{分表号} 中,需要通过 bi_vala_app_character 关联用户。先确认下分表情况。 assistant: 379位达人渠道全退用户的购课与完课先后关系如下

类别 用户数 占比
先购课后完课 192 50.7%
先完课后购课 65 17.2%
从未完成过任何课时 122 32.2%

关键发现:

  • **超过三成122人**购课后一节课都没学就退了,说明这批达人渠道用户的学习意愿本身就偏低
  • **约一半192人**是先购课再开始学习,之后退费
  • 65人是体验过课程后再购买的,但最终也退了

需要进一步分析这些用户的学习深度(比如完成了几节课后退费)或者按达人来源细分吗? user: System: [2026-04-15 11:06:10 GMT+8] Feishu[default] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52c444d6ccd4b2d7bed0c346f61]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52c444d6ccd4b2d7bed0c346f61",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 11:06 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

我想将这379人按照渠道做分类并且统计先购课还是先完课还是没有完课记录。将带有学霸和Henry字样的订单归为学霸渠道、带有念妈字样的订单归为念妈渠道、带有晚柠字样的订单归为晚柠渠道、带有四个娃字样的订单归为四个娃渠道、带有小暖阿姨字样的订单归为小暖阿姨渠道。 assistant: 379位达人渠道全退用户按渠道分类统计如下

渠道 用户总数 先购课后完课 先完课后购课 从未完成课时
学霸渠道 337 17251.0% 6218.4% 10330.6%
念妈渠道 32 1443.8% 26.3% 1650.0%
四个娃渠道 8 675.0% 0 225.0%
小暖阿姨渠道 1 0 0 1
晚柠渠道 1 0 1 0

几个要点:

  • 学霸渠道是绝对主力337人占全退用户的88.9%其中103人30.6%)买了一节课都没上就退了
  • 念妈渠道退费用户中一半16人从未完成过课时学习转化比学霸渠道更差
  • 四个娃、小暖阿姨、晚柠三个渠道体量很小,样本不足以做趋势判断

需要进一步分析学霸渠道这337人的学习深度或退费时间分布吗 user: System: [2026-04-15 11:13:51 GMT+8] Feishu[default] DM | 李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2) [msg:om_x100b52c4683c4884b3734406543f3ce]

Conversation info (untrusted metadata):

{
  "message_id": "om_x100b52c4683c4884b3734406543f3ce",
  "sender_id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "sender": "李承龙",
  "timestamp": "Wed 2026-04-15 11:13 GMT+8"
}

Sender (untrusted metadata):

{
  "label": "李承龙 (ou_e63ce6b760ad39382852472f28fbe2a2)",
  "id": "ou_e63ce6b760ad39382852472f28fbe2a2",
  "name": "李承龙"
}

将用户群体从4月份成交并退费的用户扩展到全部购课并退费的用户然后只看学霸、念妈和晚柠三个渠道 assistant: 扩展到全量购课并全部退费的用户后,三个渠道的统计如下:

渠道 用户总数 先购课后完课 先完课后购课 从未完成课时
学霸渠道 337 17351.3% 6118.1% 10330.6%
念妈渠道 240 12853.3% 187.5% 9439.2%
晚柠渠道 132 5743.2% 2720.5% 4836.4%

对比分析:

指标 学霸 念妈 晚柠
全退用户总数 337 240 132
从未完成课时占比 30.6% 39.2% 36.4%
先完课后购课占比 18.1% 7.5% 20.5%
  • 念妈渠道的"从未完成课时"占比最高39.2%),且"先完课后购课"比例最低7.5%),说明这个渠道的用户体验产品的意愿最弱,冲动购买后直接退费的比例偏高
  • 晚柠渠道的"先完课后购课"比例最高20.5%),说明用户有一定体验意愿,但体验后购买再退费
  • 学霸渠道体量最大,各项比例处于中间水平

需要进一步看这些用户完成了多少节课后退费,或者按购买时间段拆分吗?