← Back to skills
extension
Category: Data & AnalyticsNo API key required

自然语言转 SQL 数据查询

用中文描述你想查的问题,自动生成可执行的 SQL 并在示例数据集上跑出结果,支持导出 CSV 与结果解读

personAuthor: u_04a46b4ehubcommunity

自然语言转 SQL 数据查询

把"人话"变成"能跑的 SQL"。用户不需要会写 SQL,只要说清楚想从数据里知道什么,技能生成 SQL、在内存数据集上执行、返回结果表并解释含义。

适用场景

  • 运营/分析师拿到一张 Excel/CSV,想临时问"各渠道 7 日留存率""GMV 环比 Top5 城市",但不想写 SQL。
  • 老板口述一个指标口径,需要立刻出数验证。
  • 教学/面试:把自然语言需求翻译成标准 SQL,对比学习。

工作流

  1. 收数据:让用户粘贴 CSV/Excel 表头与几行样例,或描述表结构(列名+类型)。
  2. 澄清需求:用 1–2 个反问锁定口径(时间范围、分组维度、聚合方式、筛选条件),避免歧义。
  3. 生成 SQL:基于表结构产出 ANSI SQL(优先 DuckDB/SQLite 语法,通用性强)。
  4. 执行验证:在本地 DuckDB 或 pandasql 中跑一遍,确认能出数、无语法/类型错误。
  5. 解读结果:把结果表转成中文结论 + 导出 CSV 片段。

技术底座(可自托管)

  • DuckDB(OLAP,单文件,毫秒级查询 CSV/Parquet)——推荐默认底座。
  • 或 pandasql(pandas + SQL 语法)。
  • 进阶:接 Vanna(NL-to-SQL + RAG,MIT)做带训练样本的企业库问答。

提示词骨架

你是基于以下表结构的 SQL 生成器:
表名: {table}
列: {columns_with_types}
需求: {user_question}
要求:
1. 输出单条可执行 SQL(DuckDB 语法)
2. 不臆造不存在的列
3. 复杂口径先给注释说明计算逻辑
4. 附带 1 行中文结论

示例

  • 用户:"上个月复购超过 3 次的用户有多少?"
  • 产出:SELECT COUNT(*) FROM orders WHERE ... GROUP BY user_id HAVING COUNT(DISTINCT date)>3 + 结论"共 1,284 位用户"。

边界

  • 不连生产库;只跑用户提供的样例/脱敏数据。
  • 多表 JOIN 需用户给清关联键。
  • 不保证统计口径与业务定义一致,结论需人工复核。