方法 · 2026 年 1 月 16 日 · 12 分钟
听清、看见、写出、核对:问数的四个节拍
我把自己用的问数流程压成四拍。它不是架构图,是一份可以当着别人的面做的检查。缺一拍,后面的漂亮语句都不值钱。
第一拍听清,第二拍看见
听清:时间、指标、范围、统计方式。缺了就先补问题。看见:有哪些表、字段叫什么、哪列关联、状态值是什么。看不见结构就写语句,等于蒙题。公开实践里,可落地的问数会给自己配备「手和眼睛」:列出表、描述字段、抽样几行、再执行。那不是炫技,是把第二拍做扎实。
第三拍写出,第四拍核对
写出:尽量是可阅读的 SELECT。复杂逻辑用公共表表达式拆开,方便人眼扫。核对:FROM 有没有连错,WHERE 有没有时间窗,SELECT 是不是你要的指标。看不懂就先查明细再聚合。
节拍可以停,不能跳
含糊时停在第一拍。表看不清时停在第二拍。报错时停在第三拍改一处。数字出来了才进入第四拍。跳拍的典型样子是:一句话直接出一张汇总表,没有抽样,没有口径,对不上账时也不知道从哪改。
一次完整的问法可以先写成下面这样:
本月截至昨天,上海市已支付订单的成交金额,按一级类目汇总,从高到低。
落到语句上,草稿常常是:
SELECT category_l1, SUM(pay_amount) AS gmv
FROM orders
WHERE pay_time >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1 day')
AND pay_time < CURRENT_DATE
AND city = '上海'
AND pay_status = 'paid'
GROUP BY category_l1
ORDER BY gmv DESC;
四拍齐了,这条语句才有资格给人看。个人站点上,编排可以以后再加。先保证每一拍都能被另一人复查。
入门时我给自己定的边界
问数可以学得很花。入门阶段我只守三样:问题能转发、结构能看见、语句能当收据。公开长文里还有代理循环、多层架构、图表生成。那些是工程展开,不是入门必做。
边界还有一条:不把问数当成闲聊机器人。闲聊允许含糊,问数的含糊会变成默认值,默认值会变成错数。错数一旦进了汇报,纠正成本高于当初把问题问完整。
练习用假数据。真库上只跑已经钉死的卡片。本站公开的是手艺,不是连接。把这两者分开,入门才不会在第一周就踩到权限和隐私。
读完这一辑可以做什么
选一张假的订单表。连续五天问同一句「昨天已支付金额」。把锚点、状态值、含不含今天写成卡片。五天的数能对上你自己的手工合计,入门才算落地。
四拍里最常被跳过的是第二拍。表没看见就写语句,后面的核对只能核对自己的想象。