SQL窗口函数中RANK、DENSE_RANK、ROW_NUMBER的区别在于是否跳号;JOIN与窗口函数配合时推荐将窗口计算封装进子查询或CTE;ROWSBETWEEN用于指定滚动计算范围;MySQL和PostgreSQL在RANGE与时间类型组合、GROUPBY后使用窗口函数等方面存在差异,迁移时需注意。
SQL中如何用JOIN和窗口函数实现复杂排名统计?
作者:技术拾光
时间:2026-07-21
浏览:91
# SQL窗口函数实战:从排名到统计的全场景解析
做数据分析的朋友一定遇到过这样的情况:明明用`RANK()`给销售数据排名,结果出来却是1,1,3,中间跳过了2号位。这到底是怎么回事?其实,这三个排名函数各有各的脾气——`RANK()`遇到并列值会跳号,`DENSE_RANK()`并列不跳号,而`ROW_NUMBER()`则严格按顺序编号,不管值是否相等。

实用工具推荐
电子包浆
使用 ›绿化、压缩、噪点和虚拟水印,自由调节做旧程度。
图片压缩
使用 ›选择画质和输出格式,预览压缩前后的大小。
相关文章