数据分析师、运营怎么用 AI 写 SQL、取数、做报表、找异动原因:国产模型分工 + 8 个提示词模板
先说结论:AI 写 SQL 的准确率,取决于你给它多少表结构,而不是取决于模型有多聪明。 同一个问题,你只说「帮我查一下上周的付费用户数」,它会编一个 users 表、一个 is_paid 字段,跑不通;你把建表语句贴给它,它一次写对的概率能到八九成。所以这篇的模板全部从「先喂表结构」开始。
模型分工上:写 SQL、改 SQL、解释报错、优化慢查询用 DeepSeek(代码能力最稳,见 国产模型写代码怎么选),一次读几十张表的字段字典、几百行别人写的老 SQL 用 Kimi K3(上下文最长,见 Kimi K3 读长文档),指标异动归因、判断结论能不能下用 DeepSeek R1(会把「相关」和「因果」分开),把数字写成分析报告、周报用通义千问(中文表达好,见 AI 写周报和工作总结)。全部在不墨 AI 助手同一个页面切换。
这篇讲的是 SQL 和分析。手里只有一张 Excel、不需要连数据库的,看 国产模型做 Excel 数据分析 那篇就够。
一个取数需求从提出到交付的分工
| 环节 | 模型 | 做什么 | 产出 |
|---|---|---|---|
| ① 理解老库 | Kimi K3 | 读字段字典、老 SQL,告诉你哪张表是干什么的 | 表关系说明 |
| ② 澄清口径 | DeepSeek R1 | 把「付费用户」这种模糊词逼成能查的定义 | 口径清单 |
| ③ 写 SQL | DeepSeek | 按表结构 + 口径写查询 | SQL |
| ④ 报错 / 慢 | DeepSeek | 解释报错、改写慢查询 | 修好的 SQL |
| ⑤ 验数 | DeepSeek R1 | 给出结果后,列出「这个数可能错在哪」的检查项 | 验数清单 |
| ⑥ 异动归因 | DeepSeek R1 | 指标掉了,按维度拆解找原因 | 归因树 |
| ⑦ 写报告 | 通义千问 | 把数字和结论写给业务方、老板 | 分析报告 |
| ⑧ 固化报表 | DeepSeek | 把一次性 SQL 改成可以每天跑的报表 SQL | 报表 SQL |
8 个提示词模板
1. 读懂别人留下的库 · Kimi K3
(上传字段字典 / 建表语句文件 / 老 SQL 文件,几十张表也一次传)
这是我们公司数据库的建表语句和几段以前同事写的 SQL。我刚接手,请帮我:
1. 按业务分组列出所有表:每张表一句话说明是什么(从表名、字段名和老 SQL 的用法推断),标注主键和常用的关联字段
2. 画出表之间的关联关系(哪张表的哪个字段连哪张表)
3. 老 SQL 里反复出现的过滤条件(比如 status = 1、is_deleted = 0、某个渠道被排除)单独列出来,这些通常是不成文的口径
4. 哪些表看起来像是同一个东西的新旧两版(比如 order 和 order_v2),提醒我确认用哪个
不确定的地方标【推断】,不要写得像你确定。
2. 把模糊需求逼成口径 · DeepSeek R1
业务方的取数需求原话:【比如 帮我看看上周新用户的付费情况】
我们库里相关的表和字段:【粘贴模板 1 输出里相关的部分】
请在写 SQL 之前,先把需求里每个模糊词逼成能查的定义,逐条列出:
- 「新用户」:按注册时间还是首次活跃?时间窗口是自然周还是最近 7 天?包不包括注册后没登录的?
- 「付费」:下单算还是支付成功算?退款的怎么处理?0 元订单算不算?
- 「情况」:业务方大概率想要哪几个数(人数、金额、转化率、ARPU)?
每一条给出 2~3 个可能的定义 + 你建议默认用哪个 + 为什么。
最后整理成一段可以直接发给业务方确认的话,5 行以内。
3. 按表结构写 SQL · DeepSeek
数据库:【MySQL 8 / PostgreSQL / ClickHouse / Hive】
相关建表语句:
【粘贴,字段有注释的保留注释】
已确认的口径:
【粘贴模板 2 确认后的定义】
要查的:【比如 上周(自然周,周一到周日)每天的新注册用户数、其中 7 天内付费的人数、付费金额】
要求:
- 只用我给的表和字段,不要假设存在其他字段;缺什么字段就告诉我缺,不要编
- 时间字段的时区和格式按建表语句里的类型处理,涉及日期截断写明用的是哪个函数
- 每段 CTE 或子查询前加一行注释说明在算什么
- 写完后列出「这个 SQL 在什么情况下会算错」:比如一个用户多条付费记录会不会重复算、左连接会不会把人数放大
4. 解释报错 / 改慢查询 · DeepSeek
数据库:【】
这段 SQL:
【粘贴】
问题是:【报错信息原文 / 跑了 3 分钟没出来 / 结果比预期多了一倍】
表的数据量大概:【比如 订单表 2 亿行,用户表 500 万行】,已有索引:【知道就写】
请:
1. 先说问题出在哪一行、为什么
2. 给修改后的 SQL,改动的地方加注释
3. 如果是慢,解释你改了什么让它变快(少扫了哪张表、避免了哪种连接、能不能用上索引),并说明结果是不是完全一样,还是有细微差别
4. 如果需要加索引,给建索引语句,并说明加了以后对写入的影响
5. 验数 · DeepSeek R1
SQL:【粘贴】
跑出来的结果:【粘贴前几行或汇总数】
我原本预期:【比如 每天新用户在 1000 左右,现在算出来 3000】
请帮我检查这个数为什么可能不对,按可能性从高到低列:
- 连接导致的重复(哪张表对哪张表是一对多)
- 过滤条件漏了(测试账号、内部账号、软删除、退款)
- 时间边界(时区、闭区间开区间、当天没跑完)
- 口径本身和业务方理解不一致
每一条给出「怎么验证」:一段小 SQL 或一个检查动作。
不要直接说「数据没问题」,也不要直接改 SQL,先让我确认是哪一种。
6. 指标异动归因 · DeepSeek R1
指标:【比如 日活】,异动:【比如 9 月 12 日比前 7 天均值掉了 18%】
我能拆的维度和对应数据:
【粘贴按渠道 / 平台 / 版本 / 地区 / 新老用户拆开的表格,每个维度异动前后各一列】
同期发生的事(知道的都写):【比如 9 月 11 日发了新版本 / 某渠道停投 / 节假日】
请做归因:
1. 先算每个维度里哪个分组贡献了最大的绝对降幅(不是降幅百分比最大的,是掉了最多人的)
2. 多个维度同时能解释时,判断它们是不是同一个原因(比如「安卓掉」和「新版本掉」可能是一回事)
3. 区分「相关」和「原因」:哪些只是同时发生,哪些有机制能解释
4. 给出最可能的 1~2 个原因 + 验证方法(再拉什么数能确认)
5. 明确写出「以现有数据还不能下结论的部分」
不要为了给出答案而把巧合说成原因。
7. 把数字写成报告 · 通义千问
读者:【业务负责人 / 老板,不看 SQL,只看结论】
分析结论(我自己的话,可以很乱):【粘贴模板 6 的结论 + 核心数字】
用途:【周会汇报 / 发在群里 / 邮件】,长度:【200 字 / 一页】
要求:
- 第一句就是结论 + 最关键的一个数字,不要从「本周我们对 xx 进行了分析」开始
- 结构:发生了什么 → 原因是什么(有多确定就写多确定,不确定的说「初步判断」)→ 建议做什么 → 需要谁决定什么
- 每个数字带对比基准(比前 7 天均值 / 比上月同期),不要孤零零一个数
- 不用「赋能」「抓手」「闭环」,不用感叹号
- 结尾附一行「数据口径」,写清时间范围和排除了什么
8. 一次性 SQL 改成日报 · DeepSeek
这是我手动跑的 SQL:
【粘贴】
现在要把它改成每天早上自动跑、往报表表里写一行的版本。调度工具是【Airflow / 公司自研 / 只是一个 cron + 脚本】,数据库【】。
要求:
1. 把写死的日期改成参数(比如 ${date} 或昨天),说明在我们的工具里怎么传
2. 结果写入表:【表名,没有就帮我设计一个,主键要能保证重跑不重复插入】
3. 加上重跑安全:同一天跑两次结果一致(先删后插或 upsert)
4. 补一段「数据质量检查」SQL:昨天的行数为 0、或比前 7 天均值偏差超过 50% 时能发现
5. 列出上线前我要手动检查的 3 件事
5 条防「AI 编字段」规则
- 建表语句永远先于需求。 不给表结构就让 AI 写 SQL,它一定会编出漂亮但不存在的字段名。模板 3 明写「缺字段就说缺,不要编」,你也要在它输出后对一遍字段名。
- 口径先和人确认,再写 SQL。 取数返工的大头不是 SQL 写错,是「付费」「活跃」「新用户」的定义和业务方脑子里的不一样。模板 2 就是逼你在动手前把这一步做掉。
- 结果出来先怀疑,再交付。 数字比预期高一倍,八成是一对多连接放大了。模板 5 让 R1 列检查项而不是直接改,因为改错方向会把一个对的数改错。
- 归因看绝对降幅,不看百分比。 一个只有 50 人的渠道掉了 80%,对整体几乎没影响;主渠道掉 5% 才是大头。模板 6 第一条就是这个。
- AI 不能替你连数据库。 它看不到真实数据,所有「跑出来是多少」都要你自己跑。让它说「我查了一下」的都是幻觉。
常见问题
我是运营,完全不会 SQL,能用吗? 能,但要走模板 1 → 2 → 3,把公司的表结构问技术要来(通常是一份字段字典或建表语句),贴给 AI,它写出来的 SQL 你拿去查询平台跑就行。跑报错就用模板 4 把报错原文贴回去。前几次让懂的同事看一眼结果。
表结构是公司内部数据,贴给 AI 安全吗? 建表语句只有表名和字段名,不含用户数据,一般没问题;但如果字段注释里写了敏感信息,先删掉。真实数据(用户表的行)不要贴,模板 5 也只需要汇总数。
Python / pandas 的分析能这么问吗? 一样,把「数据库」换成「pandas」、建表语句换成 df.dtypes 的输出,DeepSeek 处理得同样好。零基础的可以看 不会编程用 AI 写小工具。
要花钱吗? 登录送免费额度,日常取数、改 SQL 够用。每天要读大量老 SQL、做多份报告的看会员方案。
一句话总结
数据分析用 AI,先让 Kimi K3 一次读完建表语句和老 SQL 理清哪张表是干什么的,让 DeepSeek R1 把「付费用户」这种模糊词逼成能查的口径,再让 DeepSeek 只用你给的字段写 SQL、修报错、改慢查询,数字出来先让 R1 列「可能错在哪」、掉了让它按绝对降幅归因,最后让通义千问写成第一句就是结论的报告。表结构先喂、口径先定、数字先疑,AI 才是分析师而不是编故事的。