贵州城乡建设厅考试网站,网站怎么做h5支付宝支付接口,大兴营销型网站建设,广州做网站的公司RANK()是SQL Server的窗口函数#xff0c;为结果集中的行生成排名。当出现相同值时#xff0c;后续排名会跳过被占用的名次#xff0c;形成自然间隔。与DENSE_RANK()的关键区别在于是否允许排名值连续。 语法#xff1a;
RANK() OVER ([PARTITION BY 分组列]ORDER BY 排序… 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名