方法 · 2026 年 1 月 28 日 · 10 分钟
哪些问题根本不该拿去问数
问数有边界。越界的问题不是「问得不够聪明」,是问题本身不落在表上。把边界写清楚,能省掉一串假答案。
库里没有的事实
「用户为什么不买了」没有直接字段。你可以问「过去三十天加购未支付的人数」,那是事实。因果要另做分析,不要假装一条 SELECT 能回答为什么。
还没有口径的词
「优质客户」「异常订单」「爆款」在字典里没有定义时,先停。先写规则:消费次数、金额阈值、时间窗。规则写不出来,就不要问数。
会改数据的冲动
「帮我把这些订单改成已发货」不是问数。问数默认只读。任何更新、删除、建表,都要另走变更流程,并留下人的签字。
一次完整的问法可以先写成下面这样:
过去三十天加购了但未支付、且加购金额超过 200 元的用户有多少?只要注册用户。
落到语句上,草稿常常是:
SELECT COUNT(DISTINCT user_id) AS cnt
FROM cart_events
WHERE event_time >= CURRENT_DATE - INTERVAL '30 day'
AND event_time < CURRENT_DATE
AND paid_flag = 0
AND cart_amount >= 200
AND user_type = 'registered';
这条问的是「有多少」,不是「为什么」。能问的留在问数里。不能问的,写成分析题,另开一页。
入门时我给自己定的边界
问数可以学得很花。入门阶段我只守三样:问题能转发、结构能看见、语句能当收据。公开长文里还有代理循环、多层架构、图表生成。那些是工程展开,不是入门必做。
边界还有一条:不把问数当成闲聊机器人。闲聊允许含糊,问数的含糊会变成默认值,默认值会变成错数。错数一旦进了汇报,纠正成本高于当初把问题问完整。
练习用假数据。真库上只跑已经钉死的卡片。本站公开的是手艺,不是连接。把这两者分开,入门才不会在第一周就踩到权限和隐私。
读完这一辑可以做什么
选一张假的订单表。连续五天问同一句「昨天已支付金额」。把锚点、状态值、含不含今天写成卡片。五天的数能对上你自己的手工合计,入门才算落地。
把「为什么」送去分析,把「有多少」留在问数。两件事混在一句里,两头都会脏。