运营用 AI 写 SQL 查询:用自然语言生成查询语句
负责用户增长、活动策划和社群运营的互联网运营,日常工作里活动方案、推送文案、社群话术、数据复盘一个接一个,经常要在短时间内产出大量文字。很多人知道要查什么数据,但写 SQL 时卡在关联、分组和窗口函数上。本文给出运营用 AI 写 SQL 查询的一套可直接照抄的做法:提供表结构和字段含义,用自然语言描述需求,让 AI 写 SQL 并解释每一步,再用小范围数据验证。
使用场景
运营需要从数据库里查“活动数据”相关的数据:按活动渠道统计最近一个月的参与人数,还要和上个月对比。数据团队排期很满,自己写 SQL 又总是出错。对运营来说,这类需求往往和“运营 5 个用户社群并收集反馈”“优化新用户首周引导流程”这些事挤在同一周,留给它的时间并不多。
推荐工具
可以用 ChatGPT、Claude、DeepSeek 等对话助手,也可以用数据库客户端或 BI 工具内置的 AI 查询功能(如 DataGrip、DBeaver 的 AI 助手,以及不少 BI 平台的自然语言查询)。
案例:一次完整的使用过程(虚构)
先看一个虚构但很典型的例子。老张是一位负责用户增长、活动策划和社群运营的互联网运营,这周手头的事情包括“撰写 12 条推送和短信文案”和“整理社群常见问题库”,偏偏这时又需要写 SQL 查询。老张没有从空白页开始,而是先花几分钟把相关材料整理好,按下面的提示词交给 AI,拿到初稿后对照原始资料逐条核对,再补上自己的判断。整个过程中,老张特别留意不把用户手机号、订单信息和未公开的活动预算放进对话里。
分步操作
- 提供表名、字段名、字段类型和含义,不需要真实数据
- 说明数据库类型,例如 MySQL 8 或 PostgreSQL
- 用自然语言描述需求,最好附上期望结果的样子
- 让 AI 解释 SQL 的每个部分
- 先加 LIMIT 在测试库或小范围运行,核对结果
提示词模板(可直接复制)
提示词的关键是把背景、要求和输出格式写清楚:
【背景】当前的难点是:活动预算尚未最终审批,奖品方案可能调整。
数据库:MySQL 8.0
表 records(活动数据),字段:
- id:主键
- category:活动渠道,文本
- record_date:活动日期,DATE
- amount:参与人数,数值
- type:活动类型,文本
需求:
1. 统计 2026 年 10 月每个 category 的 amount 合计和记录数
2. 同时给出 9 月的合计,以及环比变化百分比
3. 按 10 月合计从高到低排序
请写出 SQL,并逐段解释;如果 9 月没有数据,环比显示为 NULL。
示例输出(仅供示意)
以下是一段示意性的输出,内容基于虚构的工作记录,仅用于展示格式和思路,实际结果会因工具和输入不同而变化:
WITH m AS ( SELECT category, SUM(CASE WHEN record_date >= '2026-10-01' AND record_date < '2026-11-01' THEN amount END) AS oct_total, COUNT(CASE WHEN record_date >= '2026-10-01' AND record_date < '2026-11-01' THEN 1 END) AS oct_cnt, SUM(CASE WHEN record_date >= '2026-09-01' AND record_date < '2026-10-01' THEN amount END) AS sep_total FROM records WHERE record_date >= '2026-09-01' AND record_date < '2026-11-01' GROUP BY category ) SELECT category, oct_total, oct_cnt, sep_total, ROUND((oct_total - sep_total) / NULLIF(sep_total, 0) * 100, 1) AS mom_pct FROM m ORDER BY oct_total DESC;解释:先用条件聚合一次算出两个月的数据,NULLIF 避免除以 0,WHERE 限定时间范围以利用日期索引。
这样的输出只是起点。真正用到“撰写 12 条推送和短信文案”这类工作里之前,还需要对照原始资料逐条检查,并补上 AI 不知道的背景。
注意事项与技巧
- 不同数据库的语法有差异,一定说明数据库类型和版本。
- 不要把含有用户手机号、订单信息和未公开的活动预算的查询结果交给公共 AI 工具。
给运营的特别提醒
给 AI 讲清楚目标人群、渠道字数限制和品牌语气,一次让它出多个版本再挑选。同时要记住:AI 写的活动规则和优惠描述必须逐字核对,避免出现与实际规则不符的承诺。
还可以这样用
- 解释他人的 SQL:把复杂查询交给 AI,让它用中文说明在做什么。
- 转换方言:把 MySQL 语句改写成 PostgreSQL 或其他数据库的写法。