img

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. 业务模型是真业务。
覆盖三大业务域:

业务域条数典型分析主题
电商 / 零售110GMV 趋势、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;

▲ 配图:RFM 用户价值分层

示例 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;

▲ 配图:递归 CTE 补全缺失销售日 + 7 日移动平均

示例 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 商品」,字符串聚合在四库里分别是:

能力MySQLPostgreSQLOracleSQL Server
限制行数LIMIT nLIMIT nFETCH FIRST n ROWS ONLYOFFSET 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_DATECURRENT_DATETRUNC(SYSDATE)CAST(GETDATE() AS DATE)
递归 CTEWITH RECURSIVE x ASWITH RECURSIVE x ASWITH x(col) ASWITH 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
  • MySQLmysql -u <user> -p <db> --default-character-set=utf8mb4 < mysql_init.sql
  • Oracle:SQL*Plus 里 @oracle_init.sql(首跑会有「表不存在」的忽略提示,正常)
  • SQL Serversqlcmd -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.


寻门而入,破门而出