| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- -- ============================================================
- -- 超级仓库 SuperVault · 已售统计 SQL(自营·全站累计口径)
- -- 日期:2026/08/14
- -- 数据源:super_vault_product_record / super_vault_report_record
- -- 统计口径:
- -- 0) 统计范围 = sold_count>0 且 status NOT IN (0,1,2,3)(剔除未开卖与未开始/预售/进行中等未成交态,
- -- 只留 status 4/6/7/8/9/10/12 等有效成交态)。
- -- —— 平台为自营,全站视为一个商家;用「主播 anchor」作二级拆分维度。
- -- —— 主播按 anchor_username 分组:同名不同 anchor_id(如两个「北京小周」)合并为一位主播。
- -- 1) 销售额 = SUM(sign_price * count) —— 单价×总份数=满仓总价(随机卡种/未售罄团会高于实收 total_price)
- -- 2) 成团数 = 拼团商品数(sold_count>0 且 status NOT IN(0,1,2,3))
- -- 3) 参与人数 = 拆卡报告 user_name 去重(中卡用户近似,仅覆盖有报告的商品)
- -- 4) 均拼单价 = 销售额 / 成团数
- -- 5) 人均消费 = 销售额 / 参与人数
- -- 6) 成交时间 = COALESCE(completion_time, sold_time, sell_time):完成→售罄成交→开售 依次兜底
- -- —— 若只统计某段时间:给主查询与子查询都加成交锚点过滤,例如
- -- AND COALESCE(p.completion_time, p.sold_time, p.sell_time)
- -- BETWEEN '2026-08-01 00:00:00' AND '2026-09-01 00:00:00'
- -- (两段 SELECT 各自独立,可在 Navicat 单独选中执行)
- -- ============================================================
- -- ------------------------------------------------------------
- -- 一、平台大盘(自营·全站累计)
- -- ------------------------------------------------------------
- SELECT
- -- 销售额(元)= 单价×总份数
- ROUND(SUM(p.sign_price * p.count), 2) AS 销售额,
- -- 主播数(按主播名去重,合并同名)
- COUNT(DISTINCT p.anchor_username) AS 主播数,
- -- 成团数
- COUNT(*) AS 成团数,
- -- 均拼单价(销售额 / 成团数)
- ROUND(SUM(p.sign_price * p.count) / NULLIF(COUNT(*), 0), 2) AS 均拼单价,
- -- 参与人数(拆卡报告中卡用户昵称去重)
- (SELECT COUNT(DISTINCT rr.user_name)
- FROM super_vault_report_record rr
- JOIN super_vault_product_record pp ON pp.pid = rr.pid
- WHERE pp.sold_count > 0 AND pp.status NOT IN (0, 1, 2, 3)
- AND rr.user_name IS NOT NULL AND rr.user_name <> '') AS 参与人数,
- -- 人均消费(销售额 / 参与人数)
- ROUND(
- SUM(p.sign_price * p.count) /
- NULLIF((SELECT COUNT(DISTINCT rr.user_name)
- FROM super_vault_report_record rr
- JOIN super_vault_product_record pp ON pp.pid = rr.pid
- WHERE pp.sold_count > 0 AND pp.status NOT IN (0, 1, 2, 3)
- AND rr.user_name IS NOT NULL AND rr.user_name <> ''), 0),
- 2
- ) AS 人均消费
- FROM super_vault_product_record p
- WHERE p.sold_count > 0 AND p.status NOT IN (0, 1, 2, 3);
- -- ------------------------------------------------------------
- -- 二、各主播汇总(按主播名分组·合并同名,按销售额倒序)
- -- ------------------------------------------------------------
- SELECT
- p.anchor_username AS 主播名,
- -- 销售额 = 单价×总份数
- ROUND(SUM(p.sign_price * p.count), 2) AS 销售额,
- -- 成团数
- COUNT(*) AS 成团数,
- -- 参与人数(该主播商品拆卡报告中卡用户去重)
- (SELECT COUNT(DISTINCT rr.user_name)
- FROM super_vault_report_record rr
- JOIN super_vault_product_record pp ON pp.pid = rr.pid
- WHERE pp.anchor_username = p.anchor_username
- AND pp.sold_count > 0 AND pp.status NOT IN (0, 1, 2, 3)
- AND rr.user_name IS NOT NULL AND rr.user_name <> '') AS 参与人数,
- -- 均拼单价
- ROUND(SUM(p.sign_price * p.count) / NULLIF(COUNT(*), 0), 2) AS 均拼单价,
- -- 人均消费
- ROUND(
- SUM(p.sign_price * p.count) /
- NULLIF((SELECT COUNT(DISTINCT rr.user_name)
- FROM super_vault_report_record rr
- JOIN super_vault_product_record pp ON pp.pid = rr.pid
- WHERE pp.anchor_username = p.anchor_username
- AND pp.sold_count > 0 AND pp.status NOT IN (0, 1, 2, 3)
- AND rr.user_name IS NOT NULL AND rr.user_name <> ''), 0),
- 2
- ) AS 人均消费
- FROM super_vault_product_record p
- WHERE p.sold_count > 0 AND p.status NOT IN (0, 1, 2, 3)
- GROUP BY p.anchor_username
- ORDER BY 销售额 DESC;
- -- ------------------------------------------------------------
- -- 三、单个主播每条组队明细(把主播名换成具体主播,如 '郑宇航',按总金额倒序)
- -- 参与人数(本团) = 该团拆卡报告 user_name 去重
- -- ------------------------------------------------------------
- SELECT
- p.title AS 团名,
- p.serial AS 编号,
- p.type_name AS 卡种,
- p.standard_name AS 规格,
- p.sign_price AS 单价,
- p.count AS 总份数,
- ROUND(p.sold_count / NULLIF(p.count, 0) * 100, 1) AS 进度百分比,
- ROUND(p.sign_price * p.count, 2) AS 总金额,
- (SELECT COUNT(DISTINCT rr.user_name) FROM super_vault_report_record rr
- WHERE rr.pid = p.pid AND rr.user_name IS NOT NULL AND rr.user_name <> '') AS 参与人数,
- p.sell_time AS 开售时间,
- -- 成交时间 = 完成时间(发货完成态才有) → 售罄成交时刻 sold_time → 依次兜底
- COALESCE(p.completion_time, p.sold_time) AS 成交时间,
- TIMESTAMPDIFF(SECOND, p.sell_time, COALESCE(p.completion_time, p.sold_time)) AS 售卖时长秒
- FROM super_vault_product_record p
- WHERE p.sold_count > 0 AND p.status NOT IN (0, 1, 2, 3)
- AND p.anchor_username = '郑宇航' -- ← 改这里选主播
- ORDER BY 总金额 DESC;
|