用一份月度快照核对样本池口径
复现结果是 105 条、40 个小类、新进 29 条、移出 0 条,对应 2026-11-01 04:39:01 的月度快照。下面拆成五步,每步写明「应该得到什么」,条件写错就会得到另一个数。
一、数据源与快照时点
| 项 | 内容 |
|---|---|
| 数据源 | 生产库 BestPick 与 Plugin,只读账号查询 |
| 快照时间 | 2026-11-01 04:39:01(北京时间),锚点是当月 createdAt 最大值 |
| 排序字段 | rank 决定小类内名次,score 是排序分 |
| 样本池 | BestPick 中 status='active' 的当月行 |
| 落库方式 | 每月 1 日由重算任务批处理写入 |
二、五步复现
第 1 步,锁月份。 条件写 month = '2026-11',字符串精确匹配,不用日期区间去猜,期望 105 量级。
第 2 步,锁状态。 加 status = 'active'。不加这条,口径就从「当前在榜」变成「历史写入过」。
第 3 步,数小类。 用 COUNT(DISTINCT subKey),期望 40;写成 COUNT(*) 会得到 105,这是最常写错的一步。
第 4 步,关联插件表。 键是 Plugin.id = BestPick.pluginId,先确认 Plugin.hidden:全表 24,202 行,hidden=0 的 23,128 行,差额 1,074 行。
第 5 步,单独聚合淘汰与连续在榜。 eliminated 与 streakMonths 要独立统计,不要用「本月减上月」倒推。本月淘汰计数为 0。
-- 示意语句,字段名以实际表结构为准
SELECT month, COUNT(*) AS active_cnt,
COUNT(DISTINCT subKey) AS sub_cnt,
SUM(isNew) AS new_cnt,
MAX(streakMonths) AS max_streak,
SUM(eliminated) AS elim_cnt
FROM BestPick
WHERE status = 'active'
AND month IN ('2026-09','2026-10','2026-11')
GROUP BY month;
三、口径边界
BestPick.score的均值 1,270.8 属小类排序分量级(1,000+),Plugin.finalScore是 40–75 的综合分,不同源、不可对比。- 0 条
eliminated只代表当月没写淘汰行,不能读成当月没有淘汰。写入与否、发生与否是两件事。 - 新进 29 条不等于 29 个新收录插件,
isNew只表示本月首次进入精选。 - 105 是
active行数,不是全站规模;全站未下架插件 23,128 个。 - 「全部行」与
active是两个分母:10 月全部行 124 条 / 43 小类,active76 条 / 36 小类,差的 48 条就是淘汰行。第 2 步的status条件就是用来切开这两套的,漏掉它,10 月会读成 124。
四、复现结果:三个月完整对照
| 月份 | active 条数 |
小类数 | isNew |
最大 streakMonths |
eliminated |
|---|---|---|---|---|---|
| 2026-09 | 65 | 37 | — | — | 61 |
| 2026-10 | 76 | 36 | 35 | 2 | 48 |
| 2026-11 | 105 | 40 | 29 | 3 | 0 |
9 月两列本次未拉取,留「—」。三行同一套条件跑出,可横向比较。
五、四条核对结论
一,总量能加回来。 九个大类 18+18+16+14+10+9+9+8+3 合计 105,小类 6+6+6+5+5+3+3+3+3 合计 40,两列都对得上,没有漏类。
二,条目数被小类配额限制。 每小类平均 2.63 条,最少 1、最多 3,满配额 120 条。105 条离满配额还差 15 个位置。
三,新开 4 个小类装 9 条。 chat-agent 3 条、chat-tooling 3 条、other-cost 2 条、tool-dev 1 条;36 加 4 等于 40,且没有小类消失。
四,均值降、峰值升。 10 月均值 1,293.1、区间 189.7–1,517.6;11 月均值 1,270.8、区间 140.6–1,594.8。均值下移 22.3、峰值上移 77.2,方向相反。
六、局限
- 只覆盖一个时点,脚本重跑得到的是当时数据,历史时点需要保留备份才能复算。
- 「0 条淘汰记录」与「0 次淘汰」在查询层面分不开,必须写在结论旁边。
- 只统计
active行,未入选与已移出的条目不在样本内,算不出入选率。
七、数据复核
若第三步对不上,按顺序查:status 是否漏了 active、month 是否写成区间、JOIN 是否把同一行乘出多份。
八、适合与不适合
适合:要照步骤跑一遍验证 105 / 40 / 29 / 0 的人;接手这套表需要可执行流程的人。
不适合:想找评价的读者,这里没有单条判断;把结果当全站统计的人,分母是 active 行。
标签:数据复现、月度快照、SQL 取数、样本池
本文由 DeepSeek Harness Hub 自动整理,数据来源于站点 2026-11-01 月度快照。