使用 RANK() 在数据库中添加行的排名位置的 SQL 查询
在本文中,我们将讨论 SQL函数RANK 的概述,然后我们将主要关注在 SQL 中使用 RANK() 在数据库中添加行的排名位置。让我们一一讨论。
概述 :
通常,当执行 max/min 命令时,会显示一行作为输出。 RANK() 是为了根据表中的某些属性对行进行排名而引入的 SQL函数。根据现有值的记录,RANK函数将帮助列进行相应的排名。
句法 :
RANK() OVER(ORDER BY Any Column)
实现 RANK函数的步骤:
在这里,我们将讨论在 SQL 中实现 RANK函数的步骤。
步骤 1:参考表:
假设一个表格是根据班级学生的分数创建的,其中包含下面显示的数据。
ID | NAME | MATHEMATICS | PHYSICS | CHEMISTRY |
---|---|---|---|---|
501 | Surya | 99 | 97 | 85 |
502 | Sravan | 91 | 98 | 94 |
503 | Charan | 99 | 93 | 88 |
504 | Ram | 92 | 99 | 92 |
505 | Aryan | 94 | 99 | 88 |
506 | Sathwik | 91 | 88 | 91 |
507 | Madhav | 90 | 97 | 89 |
步骤 2:创建表:
现在,用于创建表的 SQL 语句如下所示。
CREATE TABLE MarkList
(
id int,
name varchar(20),
mathematics int,
physics int,
chemistry int
);
步骤 3:插入数据:
在这里,我们将按如下方式将行插入表中。
insert into MarkList values( 501,'Surya',99,97,85);
insert into MarkList values(502,'Charan',99,93,88);
insert into MarkList values(503,'Sravan',91,98,94);
insert into MarkList values(504,'Ram',92,99,82);
insert into MarkList values(505,'Aryan',94,99,88);
insert into MarkList values(506,'Sathwik',91,88,91);
insert into MarkList values(507,'Madhav',90,97,89);
第 4 步:验证和排名数据:
现在,如果我们想要基于数学分数的排名,则查询如下所示。
SELECT id, name, mathematics,
RANK() OVER(ORDER BY Mathematics DESC)
as
'Rank' from MarkList;
输出 : MATHEMATICS 99 1 99 1 94 3 92 4 91 5 91 5 90 7
输出如下。ID NAME RANK 501 Surya 502 Charan 505 Aryan 504 Ram 506 Sathwik 503 Sravan 507 Madhav
解释 :
- 当执行 SQL 命令时,该函数检查顺序并将排名分配给相应的行。
- 然后根据给定的代码显示带有排名的表格。
其他方法:
还有许多其他方法可以用来代替 RANK()。其中一些列在这里。
- ROW_NUMBER() 只是在排名的位置添加行号。
- DENSE_RANK() 只是给出下一个数字作为下一个等级。这不取决于其他等级的频率。