当前位置: 首页 > news >正文

SQL Server中RANK()函数:处理并列排名与自然跳号

  RANK()是SQL Server的窗口函数,为结果集中的行生成排名。当出现相同值时,后续排名会跳过被占用的名次,形成自然间隔。与DENSE_RANK()的关键区别在于是否允许排名值连续

       语法:

RANK() OVER ([PARTITION BY 分组列]ORDER BY 排序列 [ASC|DESC]
)
  • PARTITION BY:按指定列分组后分别计算排名

  • ORDER BY:决定排名的排序规则 

        例子1:基础排名(自然跳号)

-- 创建学生成绩表
CREATE TABLE ExamScores (Student NVARCHAR(50),Score INT
);INSERT INTO ExamScores VALUES
('张三', 95),
('李四', 88),
('王五', 95),
('赵六', 80);-- 使用RANK()按分数降序排名
SELECT Student,Score,RANK() OVER (ORDER BY Score DESC) AS Rank
FROM ExamScores;

        结果:

       可以看到rank那一列没有“2”,因为前边有两个“1”,这就是rank函数,会跳过2。

       示例2:分组排名(部门内排名)

-- 创建销售数据表
CREATE TABLE ProductSales (Category NVARCHAR(50),Product NVARCHAR(50),Sales INT
);INSERT INTO ProductSales VALUES
('电子产品', '手机', 1200),
('电子产品', '耳机', 800),
('服装', 'T恤', 600),
('服装', '外套', 600);-- 按商品类别分组,组内按销量排名
SELECT Category,Product,Sales,RANK() OVER (PARTITION BY CategoryORDER BY Sales DESC) AS CategoryRank
FROM ProductSales;

何时使用RANK()?

  • 需要反映自然名次间隔
    例如:奥运会奖牌排名(两个金牌后,下一名是铜牌)

  • 允许并列但保留原始名次逻辑
    例如:考试排名(两人并列第1,下一人直接第3名)

http://www.lryc.cn/news/531675.html

相关文章:

  • 如何运行Composer安装PHP包 安装JWT库
  • 最新功能发布!AllData数据中台核心菜单汇总
  • 【OS】AUTOSAR架构下的Interrupt详解(上篇)
  • 大数据挖掘--两个角度理解相似度计算理论
  • Win10微软商店重新安装指南
  • 操作系统和中间件的信息收集
  • 项目集成Spring Security授权部分
  • 5. k8s二进制集群之ETCD集群部署
  • MV结构下设置Qt表格的代理
  • 二维数组 C++ 蓝桥杯
  • 【Linux】文件描述符
  • 大语言模型的个性化综述 ——《Personalization of Large Language Models: A Survey》
  • AI 编程工具—Cursor进阶使用 Agent模式
  • 【AI大模型】DeepSeek API大模型接口实现
  • Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器
  • Kafka分区策略实现
  • 【归属地】批量号码归属地查询按城市高速的分流,基于WPF的解决方案
  • 为AI聊天工具添加一个知识系统 之78 详细设计之19 正则表达式 之6
  • 使用Java操作Redis数据类型的详解指南
  • 一表总结 Java 的3种设计模式与6大设计原则
  • Hive on Spark优化
  • Java集合面试总结(题目来源JavaGuide)
  • 计算机网络 应用层 笔记1(C/S模型,P2P模型,FTP协议)
  • ES6基础内容
  • DeepSeek本地部署的一些使用体会
  • 鲸鱼算法 matlab pso
  • 013-51单片机红外遥控器模拟控制空调,自动制冷制热定时开关
  • 在Vue3 + Vite 项目中使用 Tailwind CSS 4.0
  • Leetcode—922. 按奇偶排序数组 II【简单】
  • 一个开源 GenBI AI 本地代理(确保本地数据安全),使数据驱动型团队能够与其数据进行互动,生成文本到 SQL、图表、电子表格、报告和 BI