
1200 条复杂 SQL,4 大数据库通吃:一套能直接跑的业务分析语料库
电商 / 金融 / 人力,50 张真实表 + 约 8 万行数据,导入即跑,拿走不谢。
做数据分析、写 SQL 的同学,多少都经历过这个瞬间——
收藏夹里躺着一堆「SQL 面试题」「窗口函数大全」「100 个必会查询」,真到了业务里要你写个 RFM 分层、算个 Cohort 留存、识别一笔 快进快出的洗钱可疑交易,对着空白的编辑器还是发呆。
网上能跑的真实复杂 SQL 太少了:要么只有片段、跑不起来;要么语法对不上你正在用的库。
今天分享一个我最近在用的语料库:300 条复杂业务 SQL × 4 种数据库方言 = 1200 条,配 50 张跨业务域表、约 8 万行带业务特征的测试数据。全部通过语法校验,MySQL / PostgreSQL 已真库逐条跑通,0 失败、0 空结果。
一、它到底有什么
先上核心数字,心里有个底:
| 指标 | 内容 |
|---|---|
| 支持数据库 | MySQL 8.0+ / PostgreSQL 12+ / Oracle 12c+ / SQL Server 2017+ |
| 复杂 SQL 总量 | 300 × 4 = 1200 条,编号 001–300 四库对齐 |
| 数据模型 | 50 张表,约 8 万行带业务特征的测试数据 |
| 校验情况 | 1200 条全部通过 sqlglot 语法校验 |
| 真库执行 | PostgreSQL / MySQL 逐条执行 失败 0 条、0 行结果 0 条 |
四份查询文件 + 四份初始化脚本,文件都在 jkit-sql/src/test/resources/sqls/complex-sql/:
mysql_complex_300.sql postgresql_complex_300.sql
oracle_complex_300.sql sqlserver_complex_300.sql
mysql_init.sql postgresql_init.sql
oracle_init.sql sqlserver_init.sql
README.md
sql目录
-- ==============================================================================
-- Oracle 复杂业务 SQL 300 条
-- 适用版本:Oracle 12c+
-- ==============================================================================
--
-- 内容说明:
-- 1. 覆盖电商/零售、金融/财务、人力/组织三大业务域,另含数据治理与跨域综合分析。
-- 2. 每条 SQL 均可独立执行,普遍使用 CTE、窗口函数(排名/位移/分箱/累计/移动平均)、
-- 递归 CTE、条件聚合、自关联、相关子查询、集合运算等复杂写法。
-- 3. 业务模型涵盖 RFM、Cohort 留存、漏斗转化、帕累托/ABC、购物篮、
-- 反洗钱与可疑交易、ECL 三阶段、RWA、杜邦分析、组织架构树、
-- 薪酬带宽与分位、考勤孤岛识别、主数据质量校验等。
-- 4. 表结构与字段定义见同目录 README.md(数据模型说明)。
-- 5. 日期以各库当前日期函数为基准,实际使用可替换为固定日期。
--
-- ==============================================================================
-- 目录
-- ==============================================================================
--
-- 【电商】110 条
-- 001 窗口函数·分组排名 - 各城市销售额 Top3 商品及城市内占比
-- 002 窗口函数·环比计算 - 月度 GMV 及环比增长率
-- 003 窗口函数·累计求和 - 门店累计销售额与年度目标达成率
-- 004 窗口函数·移动平均 - 近 7 日移动平均 GMV 与趋势判断
-- 005 窗口函数·占比分析 - 各渠道 GMV 及其在总盘中占比
-- 006 窗口函数·帕累托分析 - 商品 ABC 分类(累计销售占比 80/95/100)
-- 007 自连接·同比分析 - 品类销售额同比(YoY)分析
-- 008 条件聚合·交叉矩阵 - 品类 × 渠道 销售交叉矩阵
-- 009 CTE·新老客识别 - 新老客户销售贡献对比
-- 010 窗口函数·留存计算 - 月度复购率与人均购买次数
-- 011 分位数·NTILE - 订单金额分层(五等分)与层均价值
-- 012 排名·门店人效 - 门店销售排名与区域内份额
-- 013 窗口函数·排名变化 - 商品销售排名环比变化(上升/下降)
-- 014 多表聚合·退款分析 - 各品类退款率与退款原因分布
-- 015 多表关联·营销效果 - 优惠券核销率与营销 ROI
-- 016 条件聚合·客单价分层 - 客单价分布与城市消费力分层
-- 017 时间维度·小时分析 - 分时段销售热力(按小时 + 工作日/周末)
-- 018 自连接·购物篮分析 - 跨品类连带购买(品类对共现)分析
-- 019 条件聚合·促销对比 - 促销期与非促销期销售对比
-- 020 分桶·履约时效 - 订单履约时效分布(下单到签收)
-- 021 间隙与孤岛·连续行为 - 连续下单用户识别(连续 N 天有订单)
-- 022 递归CTE·日期补全 - 生成完整日期序列并补全缺失销售日
-- 023 漏斗分析·转化 - 浏览-加购-下单-支付全链路转化漏斗
-- 024 窗口函数·LEAD - 用户首单到二单的时间间隔分布
-- 025 多表·库存周转 - 商品库存周转天数与安全库存预警
-- 026 左连接·滞销识别 - 滞销商品识别(上架后长期无销量)
-- 027 时间分段·生命周期 - 商品生命周期阶段划分(新品/成长/成熟/衰退)
-- 028 统计·相关性 - 商品评分区间与销量/价格相关性分析
-- 029 窗口·缺货损失 - 低库存缺货损失估算(按日销量外推)
-- 030 漏斗·购物车 - 购物车加购-支付转化与放弃分析
-- 031 RFM模型 - 用户 RFM 三维评分与价值分层
-- 032 Cohort留存 - 用户注册月度 Cohort 留存矩阵
-- 033 窗口·流失预警 - 用户活跃度衰减与流失预警名单
-- 034 累计·LTV - 用户生命周期价值(LTV)与价值分层
-- 035 二八法则 - 高价值用户识别与销售集中度分析
-- 036 聚合·品类广度 - 用户购买品类广度与交叉销售机会
-- 037 状态转移·等级迁移 - 会员等级迁移矩阵(年初 vs 当前)
-- 038 时间窗口·唤醒 - 沉睡用户识别与唤醒效果评估
-- 039 FIRST_VALUE·归因 - 用户首单渠道归因与后续渠道偏好
-- 040 LEAD·路径分析 - 用户品类购买路径(下一个购买品类)流转
-- 041 HAVING·跨店行为 - 跨门店/跨城市购买用户识别
-- 042 日期函数·营销名单 - 生日当月营销名单与偏好品类推荐
-- 043 异常检测·统计 - 订单金额异常检测(偏离个人历史均值)
-- 044 对账·差异检测 - 订单金额与支付流水对账差异核查
-- 045 日期差·物流异常 - 超时未签收订单与物流节点停滞监控
-- 046 聚合·风险识别 - 多收货地址异常用户识别(刷单风险)
-- 047 阈值·退货识别 - 高频退货用户与恶意退货嫌疑识别
-- 048 对比·目标达成 - 门店月度销售目标达成率与缺口
-- 049 订单内分析·连带率 - 订单商品连带率(每单平均商品数与品类数)
-- 050 预测·移动平均 - 基于历史移动平均的日销售预测与残差
-- 051 活跃度·DAU/MAU - 日活/周活/月活与粘性指标(DAU/MAU)
-- 052 转化·注册漏斗 - 注册用户到首单转化周期分析
-- 053 分布·访问频次 - 用户访问频次分布与活跃分层
-- 054 条件聚合·设备偏好 - 用户设备与渠道偏好交叉分析
-- 055 窗口·浏览路径 - 会话内页面浏览路径(前 N 步序列)
-- 056 排名·热门商品 - 商品曝光-点击-购买转化排行
-- 057 窗口·停留时长 - 商品详情页停留时长估算(相邻事件间隔)
-- 058 会话切分 - 基于 30 分钟不活跃切分用户会话并统计
-- 059 新客行为 - 新用户首周行为完整性与引导效果
-- 060 聚合·评价分析 - 商品评价分布与评分集中度
-- 061 文本·评价质量 - 评价文本长度与评分相关性(低分长评识别)
-- 062 复购·同商品 - 同商品重复购买用户与复购周期
-- 063 路径·消费升级 - 用户价格带升级路径(低价到高价迁移)
-- 064 价格带分析 - 品类价格带销售结构与主销价格区间
-- 065 份额·品牌竞争 - 同品类品牌份额与集中度(HHI 指数)
-- 066 毛利率·盈利分析 - 商品毛利率分析与低毛利商品预警
-- 067 贡献·增长分解 - 品类增长贡献分解(各品类对总增长拉动)
-- 068 预测·趋势外推 - 基于近 3 月趋势的商品销量外推预测
-- 069 促销·毛利影响 - 促销商品毛利侵蚀与净收益评估
-- 070 优惠券·叠加 - 多券叠加使用与订单优惠结构分析
-- 071 大促·活动复盘 - 大促活动期间销售爆发与前后对比
-- 072 渠道·获客质量 - 渠道新客获取质量(首单金额与留存)
-- 073 投入产出·营销 - 营销活动投入产出比(ROI)综合评估
-- 074 分层·营销名单 - 高价值流失风险用户精准营销名单
-- 075 多仓·调拨建议 - 多仓库库存分布与调拨建议
-- 076 周转·仓库健康 - 仓库库存周转天数与库存健康度评估
-- 077 对比·承运商 - 承运商时效与异常率对比评估
-- 078 逆向·退货物流 - 退货逆向物流时效与成本分析
-- 079 区域·签收异常 - 区域签收异常率与高发省份识别
-- 080 拆单分析 - 订单拆单率与拆单原因分析
-- 081 支付·方式偏好 - 支付方式偏好、成功率与金额分布
-- 082 异常·支付监控 - 支付失败率日趋势与突增告警
-- 083 风控·大额审核 - 大额订单风险分级与人工审核名单
-- 084 状态·订单健康 - 订单状态分布与异常状态占比趋势
-- 085 库存·缺货预警 - 低库存商品占比与缺货风险品类分布
-- 086 季节性·销售指数 - 月度季节性指数(季节因素对销售影响)
-- 087 波动·峰值识别 - 销售峰值日识别与波动率分析
-- 088 对比·周末效应 - 工作日与周末销售/流量差异对比
-- 089 排名·城市消费力 - 城市消费力排名与人均消费分层
-- 090 渗透·市场分析 - 区域市场渗透率与增长潜力评估
-- 091 复购·门店维度 - 门店客户复购率与忠诚度对比
-- 092 结构·门店品类 - 门店品类销售结构差异与特色品类识别
-- 093 产出·门店效能 - 门店单店产出与销售集中度分析
-- 094 预警·门店关停 - 门店经营衰退预警(双降门店识别)
-- 095 迁移·价值变化 - 用户价值分层迁移(近 3 月 vs 前 3 月)
-- 096 分层·价值识别 - 高频低价值用户识别与提升潜力评估
-- 097 敏感度·价格弹性 - 用户折扣敏感度分层与精准定价建议
-- 098 依赖·促销分析 - 品类促销依赖度与正价销售能力
-- 099 效率·曝光转化 - 商品曝光到购买的转化效率与优化排序
-- 100 转化·详情页 - 详情页浏览深度与加购转化关系
-- 101 画像·标签聚合 - 用户多维度画像标签聚合
-- 102 生命周期·阶段划分 - 用户生命周期阶段(引入/成长/成熟/衰退/流失)
-- 103 渗透·品类扩展 - 品类交叉渗透率与扩展机会矩阵
-- 104 新品·成功率 - 新品上市成功率与早期表现评估
-- 105 长尾·贡献分析 - 长尾商品贡献度与集中度分析
-- 106 预警·评分下滑 - 商品评分下滑趋势预警
-- 107 分布·周转天数 - 库存周转天数分布与呆滞库存识别
-- 108 资金·回款周期 - 订单到回款周期分析与资金占用
-- 109 看板·经营指标 - 核心经营指标日看板(多指标横向对比)
-- 110 健康度·增长质量 - 用户增长健康度(新增/活跃/留存/流失全景)
--
-- 【金融】100 条
-- 111 分层·账户余额 - 账户余额分层与客户资产分布
-- 112 窗口·余额变动 - 账户月度余额均值与环比变动
-- 113 TOPN·大额交易 - 各分支行大额交易 TopN 与占比
-- 114 异常·交易检测 - 账户交易金额异常检测(偏离历史均值)
-- 115 频次·频繁交易 - 短时高频交易识别(时间窗口计数)
-- 116 集中度·交易对手 - 客户交易对手集中度分析
-- 117 反洗钱·资金回流 - 快进快出(资金短期回流)可疑模式识别
-- 118 活跃·账户状态 - 账户休眠识别与激活转化分析
-- 119 汇总·客户资产 - 客户资产全景(存款+理财+账户余额)
-- 120 帕累托·AUM贡献 - 客户 AUM 排名与帕累托贡献分析
-- 121 结构·存款分析 - 存款期限结构与到期分布
-- 122 到期·存款流失 - 存款到期分布与续存流失预警
-- 123 结构·存贷分析 - 分支行存贷比与资金运用效率
-- 124 分层·客户价值 - 客户价值分层(按 AUM 与产品持有数)
-- 125 交叉·产品持有 - 客户产品持有交叉分析与交叉销售机会
-- 126 偏好·交易渠道 - 交易渠道偏好与渠道迁移趋势
-- 127 异常·非营业时间 - 非营业时间交易监控
-- 128 异地·交易监控 - 异地/非常用地交易识别
-- 129 关联·账户网络 - 同客户多账户资金往来与关联交易
-- 130 反洗钱·拆分交易 - 拆分交易(化整为零)规避监测识别
-- 131 循环·资金链路 - 循环转账链路检测(A→B→C→A)
-- 132 分布·风险事件 - 风险事件类型分布与等级统计
-- 133 画像·风险客户 - 高风险客户画像与综合风险评分
-- 134 分布·信用评分 - 信用评分分布与风险分层
-- 135 趋势·评分变化 - 客户信用评分变化趋势与恶化预警
-- 136 关联·评分违约 - 信用评分与贷款违约率关联分析
-- 137 监控·高风险客户 - 高风险客户交易行为实时监控
-- 138 合规·可疑报告 - 可疑交易报告(STR)候选名单生成
-- 139 迁移·风险等级 - 客户风险等级迁移矩阵
-- 140 分位数·阈值 - 交易金额分位数与监测阈值建议
-- 141 转化·开户激活 - 账户开户到首笔交易转化分析
-- 142 活跃·MAU分析 - 客户月度活跃度与留存(MAU/留存率)
-- 143 LTV·客户价值 - 客户生命周期价值(金融 LTV)评估
-- 144 流失·预警模型 - 客户流失预警(活跃度衰减 + 资产流出)
-- 145 流失·资产流出 - 客户资产净流出监控与挽留优先级
-- 146 排名·分支行规模 - 分支行存款规模排名与市场份额
-- 147 质量·贷款资产 - 分支行贷款质量与不良率排名
-- 148 盈利·分支行 - 分支行盈利贡献与成本收入比
-- 149 趋势·财务指标 - 分支行财务指标同比与环比趋势
-- 150 息差·资金成本 - 净息差(NIM)与资金成本分析
-- 151 消费·银行卡 - 银行卡消费行为与额度使用分析
-- 152 监控·境外交易 - 境外交易监控与异常识别
-- 153 MCC·商户类别 - 商户类别(MCC)消费结构与风险分布
-- 154 额度·用信分析 - 信用卡额度使用率与提额建议
-- 155 逾期·信用卡 - 信用卡逾期分析与催收优先级
-- 156 套现·嫌疑识别 - 信用卡套现嫌疑识别(大额整数 + 低频商户)
-- 157 画像·交易行为 - 客户交易行为画像(金额/频次/时段/渠道)
-- 158 链路·资金追踪 - 资金链路追踪(多层转账路径展开)
-- 159 敞口·风险汇总 - 客户风险敞口汇总(贷款 + 信用卡 + 担保)
-- 160 看板·合规指标 - 合规与风险监控日报(多指标汇总)
-- 161 账龄·贷款分析 - 贷款账龄分析与逾期阶段分布
-- 162 迁徙·逾期迁移 - 逾期阶段迁徙矩阵(滚动率分析)
-- 163 回收·不良处置 - 不良贷款回收率与核销分析
-- 164 拨备·充足率 - 贷款拨备计提与拨备充足率
-- 165 收益·贷款定价 - 贷款组合收益率与定价分析
-- 166 结构·期限分析 - 贷款期限结构与重定价缺口
-- 167 多头·借贷识别 - 多头借贷客户识别与共债风险
-- 168 审批·通过率 - 贷款申请通过率与客户画像关联
-- 169 行为·还款分析 - 客户还款行为分析与违约先导指标
-- 170 提前·还款分析 - 提前还款识别与利息损失测算
-- 171 盈利·产品对比 - 贷款产品盈利能力对比(收益-风险-成本)
-- 172 偿债·负债分析 - 客户负债率与偿债能力评估
-- 173 集中·贷款分布 - 贷款集中度分析(产品/分支/客户)
-- 174 RWA·风险资产 - 风险加权资产(RWA)测算与资本占用
-- 175 ECL·预期损失 - 预期信用损失(ECL)三阶段测算
-- 176 趋势·贷款发放 - 贷款发放趋势与季节性分析
-- 177 业绩·信贷经理 - 信贷经理业绩排名与资产质量
-- 178 催收·效果分析 - 逾期催收效果与回收率分析
-- 179 展期·贷款重组 - 贷款展期与重组识别
-- 180 看板·信贷质量 - 信贷组合质量综合看板
-- 181 净值·基金收益 - 基金净值增长率与累计收益分析
-- 182 回撤·风险控制 - 基金最大回撤与恢复期分析
-- 183 夏普·风险调整 - 基金夏普比率与风险调整收益排名
-- 184 排名·基金业绩 - 基金业绩排名与同类分位数
-- 185 波动·基金风险 - 基金净值波动率与下行风险
-- 186 持仓·客户收益 - 客户基金持仓收益与浮动盈亏
-- 187 定投·收益模拟 - 基金定投成本与收益分析(按持有期)
-- 188 申赎·资金流 - 基金申赎资金流与净流入分析
-- 189 经理·业绩评价 - 基金经理管理规模与业绩评价
-- 190 对比·基金类型 - 基金类型风险收益特征对比
-- 191 集中·持仓分析 - 客户持仓集中度与分散度评估
-- 192 回本·持仓分析 - 客户持仓回本分析与套牢识别
-- 193 归因·收益分解 - 客户组合收益归因(按基金类型)
-- 194 匹配·风险偏好 - 客户风险偏好与持仓风险匹配度
-- 195 到期·理财收益 - 存款到期收益与利息支出测算
-- 196 趋势·利润表 - 分支行利润表趋势与环比分析
-- 197 结构·资产负债 - 资产负债结构与财务杠杆分析
-- 198 预算·执行分析 - 预算执行率与偏差分析
-- 199 同比·财务对比 - 财务指标同比(YoY)对比分析
-- 200 杜邦·盈利分解 - 杜邦分析(利润率 × 资产周转 × 杠杆)
-- 201 汇率·变动影响 - 汇率变动趋势与波动分析
-- 202 敞口·外汇风险 - 外汇敞口估算与汇率敏感性
-- 203 成本·中心分析 - 成本中心费用分析与效率评估
-- 204 人效·人均产出 - 分支行人均产出与人员效率
-- 205 结构·收入分析 - 收入结构分析与中收占比
-- 206 质量·增长分析 - 收入增长质量与可持续性评估
-- 207 综合·经营分析 - 分支行综合经营分析(规模+质量+效益)
-- 208 贡献·客户综合 - 客户综合贡献度与价值评级
-- 209 盈利·产品分析 - 产品线盈利分析与资源优化建议
-- 210 看板·全景指标 - 金融机构全景经营看板(规模/质量/效益)
--
-- 【人力】75 条
-- 211 递归·组织架构 - 组织架构树递归展开与层级路径
-- 212 统计·部门规模 - 部门人数、层级与下属部门统计
-- 213 递归·汇报链 - 员工汇报链路与到 CEO 层级深度
-- 214 扁平度·管理幅度 - 管理者管理幅度(Span of Control)分析
-- 215 层级·组织深度 - 组织层级深度与扁平化程度评估
-- 216 分布·司龄分析 - 员工司龄分布与留存分析
-- 217 结构·年龄分析 - 员工年龄结构与代际分布
-- 218 交叉·职级性别 - 职级与性别交叉分布分析
-- 219 趋势·人员流动 - 月度入职离职趋势与净增长
-- 220 流失·离职分析 - 员工流失率与离职高峰分析
-- 221 留存·新员工 - 新员工留存率(入职后 3/6/12 个月)
-- 222 风险·离职预警 - 部门离职风险与关键岗位流失预警
-- 223 排名·流动率 - 部门人员流动率排名与对比
-- 224 异动·调岗分析 - 员工异动(调岗/晋升)记录分析
-- 225 人才·关键识别 - 关键人才识别与保留优先级
-- 226 成本·人力总额 - 人力成本总额与月度趋势
-- 227 占比·部门成本 - 部门人力成本占比与人均成本
-- 228 带宽·薪酬分析 - 职级薪酬带宽与分位数分析
-- 229 公平·同工同酬 - 同职级薪酬差异与同工同酬分析
-- 230 竞争·薪酬定位 - 薪酬竞争力分析(内部分位 vs 市场中位)
-- 231 调薪·幅度分析 - 调薪幅度分布与调薪覆盖率
-- 232 关联·调薪绩效 - 调薪幅度与绩效得分关联分析
-- 233 预算·薪酬执行 - 薪酬预算执行率与偏差分析
-- 234 排名·薪酬分位 - 员工薪酬排名与部门内分位
-- 235 加班·费用分析 - 加班时长与加班费分析
-- 236 税费·社保分析 - 个税与社保负担分析
-- 237 分布·实发工资 - 实发工资分布与收入离散度
-- 238 人均·部门薪酬 - 部门人均薪酬与薪酬效率
-- 239 结构·固浮比 - 薪酬结构分析(基本工资/奖金/津贴占比)
-- 240 出勤·考勤分析 - 员工出勤率与缺勤分析
-- 241 迟到·异常识别 - 迟到早退分析与高频异常员工
-- 242 加班·部门对比 - 部门加班强度与健康度预警
-- 243 连续·异常考勤 - 连续异常考勤识别(连续迟到/缺勤)
-- 244 假期·使用分析 - 假期使用情况与类型分布
-- 245 假期·余额预警 - 假期额度使用与过期预警
-- 246 分布·请假类型 - 请假类型与部门/月份交叉分布
-- 247 时长·工作分布 - 员工工作时长分布与效率分析
-- 248 弹性·远程办公 - 弹性办公与在岗模式分析
-- 249 关联·考勤绩效 - 考勤表现与绩效得分关联分析
-- 250 看板·考勤汇总 - 月度考勤综合看板
-- 251 分位·薪酬带宽 - 薪酬分位数(P25/P50/P75/P90)与带宽设计
-- 252 轨迹·薪酬增长 - 员工薪酬增长轨迹与调薪节奏
-- 253 集中·高薪分析 - 高薪员工集中度与薪酬差距
-- 254 效能·人力产出 - 人力成本产出比与效能分析
-- 255 编制·执行率 - 编制执行率与招聘缺口分析
-- 256 效能·人均产出 - 组织人均产出与效能对比
-- 257 画像·员工综合 - 员工综合画像(绩效+薪酬+司龄+考勤)
-- 258 协作·跨部门 - 跨部门项目协作网络分析
-- 259 团队·管理者分析 - 管理者团队构成与团队健康度
-- 260 看板·人力全景 - 人力资源全景看板(规模/成本/效能)
-- 261 漏斗·招聘转化 - 招聘漏斗各环节转化率与瓶颈识别
-- 262 周期·招聘时效 - 招聘需求关闭周期与积压情况分析
-- 263 渠道·招聘来源 - 招聘渠道效果与成本效益对比
-- 264 薪酬·Offer竞争 - Offer 薪资竞争力与接受率关联分析
-- 265 留存·试用期 - 新员工试用期通过率与入职来源质量
-- 266 培训·覆盖完成 - 培训覆盖率、完成率与学时结构分析
-- 267 关联·培训绩效 - 培训投入与绩效提升的关联分析
-- 268 投入·培训产出 - 培训成本投入与人均产出效益评估
-- 269 项目·人力投入 - 项目人力投入结构与成本分摊分析
-- 270 负荷·并行冲突 - 员工并行项目负荷与资源冲突识别
-- 271 进度·项目配置 - 项目周期、人力配置与交付效率对比
-- 272 梯队·继任计划 - 关键岗位继任梯队与就绪度评估
-- 273 流动·内部轮岗 - 内部岗位流动、轮岗与晋升活跃度分析
-- 274 晋升·速度分析 - 晋升速度、职级跃迁与停滞识别
-- 275 流失·原因归因 - 离职原因分布与可归因风险因素交叉分析
-- 276 多元·包容分析 - 性别与年龄结构的多元化分布及均衡度
-- 277 敬业·代理指标 - 员工敬业度代理指标与团队氛围评估
-- 278 预算·人力执行 - 人力成本预算与实际发放的执行对比
-- 279 趋势·成本同比 - 人力成本年度同比与结构变化分解
-- 280 效率·加班成本 - 加班投入与产出效率的成本效益分析
-- 281 组织·层级效能 - 组织层级深度与管理成本效能分析
-- 282 价值·员工回报 - 员工生命周期价值与人力投入回报评估
-- 283 风险·岗位空缺 - 关键岗位空缺风险与业务连续性评估
-- 284 预警·人力风险 - 人力综合风险预警(流失+负荷+成本+绩效)
-- 285 看板·部门健康 - 部门人力健康度综合看板
--
-- 【数据治理】4 条
-- 286 质量·缺失检测 - 核心业务表关键字段缺失与异常检测
-- 287 质量·重复识别 - 重复记录识别与主数据合并建议
-- 288 质量·一致性 - 跨表主数据一致性与引用完整性检查
-- 289 对账·订单支付 - 订单金额与支付流水差异对账
--
-- 【综合】11 条
-- 290 跨域·客户价值 - 电商消费与金融资产的客户综合价值分层
-- 291 跨域·门店效能 - 门店销售指标与人力配置效能联动分析
-- 292 跨域·分支行对比 - 分支行存贷规模、客户数与盈利综合排名
-- 293 下钻·多维分析 - 城市×品类×月份的销售多维下钻汇总
-- 294 波动·异常检测 - 核心指标时间序列的统计异常检测
-- 295 对比·同比环比 - 关键经营指标同比环比与复合增长率
-- 296 滚动·移动窗口 - 滚动12月移动窗口指标与趋势平滑
-- 297 帕累托·贡献度 - 全业务帕累托分析与关键少数识别
-- 298 达成·目标看板 - 目标达成率看板与差距归因分析
-- 299 看板·KPI全景 - 全业务域核心 KPI 全景看板
-- 300 汇总·决策支持 - 面向管理层的跨业务域决策支持汇总
--
-- ==============================================================================
二、为什么它不是又一份「题集」
市面上的 SQL 练习大多停在「查工资大于 5000 的员工」。这套不一样,几个关键点:
1. 真能跑,不是伪代码。
每个库都有 init.sql 负责建表 + 造数,而且数据不是随机生成的,是刻意构造了业务特征:
- 数据量向近期倾斜(约 45% 订单落在近 90 天),保证 30/90 天窗口类查询有足量样本;
- 客户 / 商品按帕累托分布,长尾滞销、低库存缺货等边缘场景都被造了出来;
- 风控域注入了拆分交易(4.6~4.95 万 ×5 笔)、快进快出、循环对敲、资金枢纽、境外聚集消费等可疑样本;
- 人力域注入了连续迟到 / 缺勤孤岛、组织架构递归树、薪酬带宽分位。
你只需要先跑 init.sql,再跑 complex_300.sql,整份分析就能在本地复现。
2. 一套模型,四种方言。
四份文件由同一套基准 SQL 渲染生成,字段名在各库完全一致,只是日期函数、字符串聚合、分页等语法按方言转换。这点对做跨库对比、写 SQL 转换工具的人特别有用。
3. 业务模型是真业务。
覆盖三大业务域:
| 业务域 | 条数 | 典型分析主题 |
|---|---|---|
| 电商 / 零售 | 110 | GMV 趋势、RFM、Cohort 留存、漏斗、购物篮、ABC 帕累托、库存周转、支付风控、门店效能 |
| 金融 / 财务 | 100 | 反洗钱、可疑交易、ECL 三阶段、RWA、NPL 迁徙、拨备、杜邦分析、NIM、基金净值/回撤/夏普、外汇敞口 |
| 人力 / 组织 | 75 | 组织架构递归树、管理幅度、薪酬带宽分位、Comp-Ratio、考勤孤岛、离职风险、招聘漏斗、继任梯队 |
另含数据治理(缺失值 / 重复记录 / 引用完整性 / 对账)与跨域综合看板。
4. 复杂度真的高。
300 条每条都至少满足 3 项以上复杂特征:多层 CTE(多数 3–6 层,部分含递归 CTE);窗口函数 ROW_NUMBER / RANK / NTILE / LAG / LEAD / FIRST_VALUE / PERCENT_RANK 以及 ROWS / RANGE 帧下的累计、移动平均、滚动求和;条件聚合、自关联、相关子查询、集合运算;业务建模如间隙与孤岛识别、同比/环比/滚动 12 月、Z-score 异常检测、帕累托累计占比、分位数分层。
三、真实长什么样?直接上代码
示例 1 · RFM 用户价值分层(编号 031,MySQL)
用 NTILE(5) 把最近消费、频次、金额各切成五档,再组合成 champion / loyal / at_risk / lost 等分层——标准且能直接跑:
WITH rfm AS (
SELECT o.customer_id,
DATEDIFF(CURRENT_DATE, MAX(o.order_date)) AS recency,
COUNT(DISTINCT o.order_id) AS frequency,
SUM(o.pay_amount) AS monetary
FROM orders o
WHERE o.status = 'completed'
GROUP BY o.customer_id
),
scored AS (
SELECT customer_id, recency, frequency, monetary,
NTILE(5) OVER (ORDER BY recency DESC) AS r_score,
NTILE(5) OVER (ORDER BY frequency) AS f_score,
NTILE(5) OVER (ORDER BY monetary) AS m_score
FROM rfm
)
SELECT customer_id, recency, frequency, ROUND(monetary, 2) AS monetary,
r_score, f_score, m_score,
CASE WHEN r_score >= 4 AND f_score >= 4 AND m_score >= 4 THEN 'champion'
WHEN r_score >= 3 AND f_score >= 3 THEN 'loyal'
WHEN r_score >= 4 AND f_score <= 2 THEN 'new_or_promising'
WHEN r_score <= 2 AND f_score >= 4 THEN 'at_risk'
WHEN r_score <= 2 AND f_score <= 2 THEN 'lost'
ELSE 'regular' END AS rfm_segment
FROM scored
ORDER BY monetary DESC
LIMIT 500;

示例 2 · 递归 CTE 补全缺失销售日 + 7 日移动平均(编号 022,MySQL)
用 WITH RECURSIVE 生成一整段日期序列,左接实际 GMV,自动标出「缺数日」,并算 7 日移动平均:
WITH RECURSIVE date_seq AS (
SELECT CAST('2024-01-01' AS DATE) AS dt
UNION ALL
SELECT CAST(DATE_ADD(dt, INTERVAL 1 DAY) AS DATE) FROM date_seq WHERE dt < CAST('2024-03-31' AS DATE)
),
daily AS (
SELECT CAST(order_date AS DATE) AS dt, SUM(pay_amount) AS gmv
FROM orders
WHERE status = 'completed'
AND order_date >= CAST('2024-01-01' AS DATE)
AND order_date < CAST('2024-04-01' AS DATE)
GROUP BY CAST(order_date AS DATE)
)
SELECT ds.dt,
COALESCE(dl.gmv, 0) AS gmv,
CASE WHEN dl.gmv IS NULL THEN 'missing' ELSE 'ok' END AS data_flag,
ROUND(AVG(COALESCE(dl.gmv, 0)) OVER (ORDER BY ds.dt ROWS BETWEEN 6 PRECEDING AND CURRENT ROW), 2) AS ma7
FROM date_seq ds
LEFT JOIN daily dl ON ds.dt = dl.dt
ORDER BY ds.dt;

示例 3 · 反洗钱·资金快进快出识别(编号 117,MySQL)
这是金融域里最典型的风控题:同一账户短时间内集中转入又转出。语料里这类可疑模式(拆分交易、循环对敲、资金枢纽)都被造进了测试数据,跑出来真有命中。
-- [117] 反洗钱·资金回流 | 金融 | 快进快出(资金短期回流)可疑模式识别
WITH flow AS (
SELECT t.account_id,
t.txn_date,
SUM(CASE WHEN t.txn_type = 'in' THEN t.amount ELSE 0 END) AS amt_in,
SUM(CASE WHEN t.txn_type = 'out' THEN t.amount ELSE 0 END) AS amt_out
FROM transactions t
GROUP BY t.account_id, t.txn_date
)
SELECT account_id,
COUNT(*) AS active_days,
SUM(amt_in) AS total_in,
SUM(amt_out) AS total_out,
ROUND(SUM(amt_out) / NULLIF(SUM(amt_in), 0), 2) AS out_in_ratio
FROM flow
WHERE amt_in > 0 AND amt_out > 0
GROUP BY account_id
HAVING COUNT(*) <= 3
AND SUM(amt_out) / NULLIF(SUM(amt_in), 0) >= 0.9
ORDER BY total_in DESC
LIMIT 200;
(注:117 的完整版还叠加了「同对手方循环」「短时高频」等条件,这里给出核心骨架。)
四、一套逻辑,四种方言随便切
最爽的点:同一个分析,四库写法一字排开对比着看。比如「各城市销售额 Top3 商品」,字符串聚合在四库里分别是:
| 能力 | MySQL | PostgreSQL | Oracle | SQL Server |
|---|---|---|---|---|
| 限制行数 | LIMIT n | LIMIT n | FETCH FIRST n ROWS ONLY | OFFSET 0 ROWS FETCH NEXT n ROWS ONLY |
| 字符串聚合 | GROUP_CONCAT(x SEPARATOR ',') | STRING_AGG(x, ',' ORDER BY y) | LISTAGG(x, ',' WITHIN GROUP (ORDER BY y)) | STRING_AGG(x, ',' WITHIN GROUP (ORDER BY y)) |
| 日期截断 | DATE_FORMAT / DATE() | DATE_TRUNC('month', d) | TRUNC(d, 'MM') | DATEFROMPARTS(YEAR(d), MONTH(d), 1) |
| 当前日期 | CURRENT_DATE | CURRENT_DATE | TRUNC(SYSDATE) | CAST(GETDATE() AS DATE) |
| 递归 CTE | WITH RECURSIVE x AS | WITH RECURSIVE x AS | WITH x(col) AS | WITH x AS |
小细节:皮尔逊相关系数
CORR在 MySQL 与 SQL Server 里没有内置函数,语料已统一改写成展开式
(n·Σxy − Σx·Σy) / SQRT((n·Σx² − (Σx)²)·(n·Σy² − (Σy)²)),保证四库结果一致。
五、怎么用?三步跑起来
以 PostgreSQL 为例(其他库换对应客户端即可):
# 1) 建表 + 导入测试数据(幂等,可重复执行)
psql -U <user> -h <host> -d bench -f postgresql_init.sql
# 2) 导入并运行 300 条复杂 SQL(可整文件执行)
psql -U <user> -h <host> -d bench -f postgresql_complex_300.sql
- MySQL:
mysql -u <user> -p <db> --default-character-set=utf8mb4 < mysql_init.sql - Oracle:SQL*Plus 里
@oracle_init.sql(首跑会有「表不存在」的忽略提示,正常) - SQL Server:
sqlcmd -S <server> -U <user> -d <db> -i sqlserver_init.sql
性能提醒:示例 SQL 以表达业务逻辑为第一目标,未做索引 / 执行计划优化。在生产大表上跑之前,建议先加时间分区过滤和必要索引。
时间范围:SQL 以各库「当前日期」函数为基准回溯 30 天–3 年;想固定区间,把当前日期 - INTERVAL '365 days'一类表达式替换成具体日期即可。
六、谁适合收藏这份?
- 数据分析师 / BI 工程师:现成的 RFM、留存、漏斗、帕累托、风控模型,改改表名就能贴进报表;
- SQL 学习者 / 备考人:从片段到多层 CTE、递归、窗口帧,循序渐进的真例子;
- 面试官 / 求职者:可直接当作面试题库或反向刷题;
- 做跨库 / ORM / SQL 转换工具的开发者:四库同字段、同指标对照,是绝佳的回归语料(它本来就是 jkit-sql 模块的测试集)。
写在最后
这份语料来自开源项目 jkit(一个零第三方依赖的 Java 工具库),文件就躺在 jkit-sql/src/test/resources/sqls/complex-sql/ 目录下,随仓库开源,Apache 2.0 协议。
对做数据分析、写 SQL、或者正在和「跨库方言差异」搏斗的同学来说,这基本是「导入即跑、拿来即用」的级别。
如果对你有用,点个赞 / 在看,转发给那个也在被 SQL 折磨的同事 —— 比收藏了不吃灰强。
📦 完整 SQL 语料包下载
公众号【开元俱乐部】后台私信回复关键词「SQL」,即可获取完整下载包(约 6.9MB):
- 9 个 SQL 文件:四库
*_complex_300.sql(各 300 条)+ 四份*_init.sql建表造数 + 数据模型与使用说明; - 附赠:《电商域 10 条最常用可复制 SQL》+《MySQL ↔ PostgreSQL 方言速查卡》。
Q.E.D.


