SQL数据分析如何剔除极端异常值_配合窗口函数检测偏离度

张开发
2026/4/16 2:28:12 15 分钟阅读

分享文章

SQL数据分析如何剔除极端异常值_配合窗口函数检测偏离度
PERCENT_RANK()可快速定位偏离度高的行返回0–1相对排序位置两端值接近0或1适用于业务分布需注意重复值影响及与CUME_DIST()、NTILE(100)的区别。用 PERCENT_RANK() 快速定位偏离度高的行直接看偏离程度比固定阈值比如 ±3σ更适配业务分布。窗口函数能避免先聚合再关联的麻烦一行 SQL 就标出“多离谱”。PERCENT_RANK() 返回 0–1 的相对排序位置两端值天然接近 0 或 1偏离度高通常对应 PERCENT_RANK() 0.01 或 0.99注意它按值排序后等分排名相同值共享同一百分位——如果字段重复多如大量 0 值两端可能被“挤占”误删正常集群别和 CUME_DIST() 混后者是“≤当前值的比例”尾部累积效应强对右偏分布容易高估异常比例用 NTILE(100) 替代百分位时的陷阱想手动分百等份NTILE(100) 看似等价但它是强行切分桶数不保证每桶数据量一致尤其样本少时比如仅 50 行NTILE(100) 会返回大量 NULL 或重复桶号。当总行数 NTILE(100) 实际只生成 ≤ 总行数个桶WHERE bucket IN (1, 100) 可能漏掉真实极值它按排序分配但不反映数值间隔——两行值差 100 和差 0.01 都可能同属第 1 桶无法识别“跳变型异常”真正需要等宽分箱如每 1% 对应固定数值区间得先算 PERCENTILE_CONT 再 JOIN 边界表剔除前必须检查的三类数据污染场景直接删 WHERE PERCENT_RANK() 0.01 很快但很多“异常”其实是脏数据信号删了反而掩盖问题。 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能

更多文章