进阶版数据分析SQL查询编写提示词
这是一份专为高级数据分析场景设计的SQL查询编写提示词方案,帮助你快速生成高效、可维护、逻辑严谨的专业SQL代码,提升数据提取与报表开发效率。
数据分析
SQL查询
查询编写
专业版
完整流程
提示词内容
可直接复制使用
角色定义 你应以资深数据分析师或数据工程师的身份,以“编写高质量、可复用、性能优先的SQL查询”为核心目标。你需要像为团队交付生产级代码一样,兼顾逻辑完整性、可读性、执行效率以及应对复杂数据场景的扩展能力。这组提示词帮助你在执行任何SQL查询任务时,快速对齐专业标准,避免低效的临时拼凑。 适用场景 多表关联的聚合分析(如用户行为漏斗、留存率计算) 时间序列指标计算(同比/环比、累计求和、移动平均) ETL过程中的数据清洗与标准化(去重、空值处理、类型转换) BI报表所需的高性能查询(分区剪枝、索引优化配合) 需要同时输出多粒度汇总(如日、周、月维度)的复杂场景 核心提示词 以下提示词可直接复制至AI工具或作为自己编写SQL的检查清单。请根据实际数据表结构调整表名和字段名。 基础结构提示词(适用于一次性查询) “请以资深数据分析师身份,编写一个SQL查询,完成以下任务:计算每个品类最近30天的销售额环比增长率。使用公共表表达式(CTE)分步定义:先计算每日销售额,再汇总每周小计,最后用LAG窗口函数计算环比。所有数值保留两位小数,并添加详细中文注释。” “输出要求:最终结果按增长率降序排列,只保留增长率不为空的记录。写出适用于PostgreSQL的语法,考虑日期索引命中。” 高级流程提示词(适用于完整ETL或报表流程) “我需要一个生产级SQL脚本,包含三个步骤:第一步,清洗原始订单表(剔除测试订单、转换时区、填充缺失的用户城市);第二步,按用户ID和月份聚合出消费金额与订单次数;第三步,用窗口函数计算每个用户当月相对前三个月的消费变化率。请使用CTE分段编写,每段开头注明目的。同时给出索引建议。” “本题涉及500万级数据量,请尽量避免子查询嵌套,优先使用JOIN和窗口函数。最终输出包含:用户ID、月份、当月金额、前三月平均金额、变化率。变化率计算公式:(当月金额 - 前三月平均金额) / 前三月平均金额。” 通用检查式提示词(用于快速审查自己的SQL) “请模拟资深SQL审核专家,检查以下SQL查询是否存在潜在性能风险、逻辑歧义或可读性问题:” + [粘贴SQL] + “请逐条指出问题点并给出优化后的代码。” 风格方向 专业严谨:避免口语化,使用标准SQL词汇(SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY),所有函数名大写。 分步注释:每个CTE或子查询前必须有用途说明,关键计算字段旁标注公式来源。 性能优先:优先考虑索引命中、避免SELECT *、限制结果集大小、使用EXPLAIN分析计划。 可扩展性:使用参数化变量(如日期范围、阈值)替代硬编码,方便后续复用。 构图建议 由于SQL查询本身是代码,构图建议主要针对输出结果的呈现方式: 若生成多个查询结果集,建议每个结果集独立成块,用分隔线分开。 对于包含窗口函数或复杂计算的查询,在输出中附带一行示例数据解释,帮助理解计算过程。 若用于PPT或报告,建议将SQL代码放入浅灰色背景的代码框截图,并高亮关键函数。 对于长查询,优先使用CTE分段展示,而不是一次性全部堆砌,便于阅读者按步骤跟踪。 细节强化 命名规范:表别名使用有意义的缩写(如 odr → orders,cust → customers),字段别名用下划线分隔(如 monthly_revenue)。 空值处理:在COUNT、SUM、AVG前明确COALESCE或NULLIF逻辑,避免意外结果。 日期处理:指定时区转换函数(如 AT TIME ZONE),避免跨时区数据混淆。 分页与限制:大结果集必须使用 LIMIT/OFFSET 或游标分页,防止内存溢出。 版本提示:在注释第一行注明目标数据库版本(如 MySQL 8.0、PostgreSQL 15),因为窗口函数支持差异会影响写法。 使用建议 根据数据库方言微调:例如Oracle不支持LIMIT需要改用ROWNUM;SQL Server使用TOP而非LIMIT。在提示词开头明确指定方言。 先测试后生产:将生成的SQL先在小样本数据(如WHERE 1=0 LIMIT 100)上验证逻辑,确认无误后再全量执行。 结合可视化工具:查询结果若用于BI工具(如Tableau、Power BI),建议在SQL中直接完成所有聚合和计算,减少前端反复查询。 保存为模板:将常用分析框架(如留存、RFM、同期群)的SQL核心结构保存为可替换参数的模板,提升重复使用效率。