名称: 查询写作 描述: 用于编写和执行SQL查询 - 从简单的单表查询到复杂的多表JOIN和聚合
查询写作技能
何时使用此技能
当您需要通过编写和执行SQL查询来回答问题時使用此技能。
简单查询的工作流
对于关于单个表的简单问题:
- 识别表 - 哪个表有数据?
- 获取模式 - 使用
sql_db_schema查看列 - 编写查询 - 使用WHERE/LIMIT/ORDER BY选择相关列
- 执行 - 使用
sql_db_query运行查询 - 格式化答案 - 清晰地呈现结果
复杂查询的工作流
对于需要多个表的问题:
1. 计划方法
使用write_todos来分解任务:
- 识别所有需要的表
- 映射关系(外键)
- 计划JOIN结构
- 确定聚合
2. 检查模式
对每个表使用sql_db_schema以找到连接列和所需字段。
3. 构建查询
- SELECT - 列和聚合
- FROM/JOIN - 在外键等于主键上连接表
- WHERE - 在聚合之前筛选
- GROUP BY - 所有非聚合列
- ORDER BY - 有意义地排序
- LIMIT - 默认5行
4. 验证和执行
检查所有JOIN都有条件,GROUP BY正确,然后运行查询。
示例:按国家收入
SELECT
c.Country,
ROUND(SUM(i.Total), 2) as TotalRevenue
FROM Invoice i
INNER JOIN Customer c ON i.CustomerId = c.CustomerId
GROUP BY c.Country
ORDER BY TotalRevenue DESC
LIMIT 5;
质量指南
- 只查询相关列(不使用SELECT *)
- 总是应用LIMIT(默认5)
- 使用表别名以提高清晰度
- 对于复杂查询:使用write_todos来计划
- 绝不使用DML语句(INSERT, UPDATE, DELETE, DROP)