常见的四种排名函数的用法(sql)

这篇具有很好参考价值的文章主要介绍了常见的四种排名函数的用法(sql)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

四个排名函数:
1.row_number
2.rank
3.dense_rank
4.ntile

1. ROW_NUMBER(排名场景推荐)
1.1 介绍

在 SQL 中,ROW_NUMBER() 是一个窗口函数,它为结果集中的每一行分配一个唯一的序号。该函数的语法如下:

ROW_NUMBER() OVER (ORDER BY column1 [, column2, ...])

其中,ORDER BY 子句指定了 ROW_NUMBER() 函数排列行的顺序。如果省略 ORDER BY,则序号将按照结果集中的任意顺序进行分配。

1.2 使用场景及例子

1.2.1 排名
通过order by进行排序得到排名。

SELECT
	id,
	name,
	score,
	row_number() OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常见的四种排名函数的用法(sql)

1.2.2 去重
可以使用 ROW_NUMBER() 函数去除重复记录。例如,在一个表中,有重复记录,想要保留每个记录的唯一编号

SELECT id, column1, column2, ...
FROM (
    SELECT *,
           ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY id) AS row_num
    FROM table_name
) subquery
WHERE row_num = 1;

1.2.3 分页查询
大可不必,不建议使用。

SELECT *
FROM (
    SELECT *,
           ROW_NUMBER() OVER (ORDER BY id) AS row_num
    FROM table_name
) subquery
WHERE row_num BETWEEN 11 AND 20;
2. RANK
2.1 介绍

在SQL中,RANK()是一个窗口函数,用于根据指定的ORDER BY子句给结果集中的每一行分配排名值。在排序过程中,如果有多个行具有相同的排序值,则它们将被分配相同的排名值。RANK()可以在SELECT语句的SELECT子句、ORDER BY子句或OVER()子句中使用。

以下是RANK()的语法:

RANK() OVER ( [PARTITION BY partition_expression, ... [n]]
ORDER BY sort_expression [ASC|DESC], ... [n] )

在这个语法中,PARTITION BY子句可选,它用于将结果集分割成不同的分区,然后对每个分区的行进行排名。如果省略PARTITION BY,则所有行将合并成一个分区,然后进行排名。
排序表达式是必需的,可以指定一个或多个表达式以排序行。SORT_EXPRESSION可以是列名称、函数、常量或表达式。

2.2 使用场景及例子

2.2.1 排名
通过order by进行排序得到排名。

SELECT
	id,
	name,
	score,
	RANK() OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常见的四种排名函数的用法(sql)
2.2.2 分组排名

SELECT
	id,
	name,
	score,
	RANK() OVER(PARTITION BY name
	ORDER BY score DESC) AS ranks
FROM
	student_info

常见的四种排名函数的用法(sql)
PARTITION BY子句指定了name列作为分区表达式,ORDER BY子句按score列降序排序。

但使用RANK排名有个问题,即字段内容相同时,会得到相同名次,并且后续会跳过几个名次,如图:
常见的四种排名函数的用法(sql)

3. DENSE_RANK
3.1 介绍

DENSE_RANK()是SQL中的一个窗口函数(window function),用于查询结果中的排名。与RANK()类似,不同之处在于DENSE_RANK()不会出现相同的排名。即使有多个值排名相同,紧随其后的排名也会按照定义进行递增。解决RANK的问题。

3.2 使用场景及例子

3.2.1 排名
通过order by进行排序得到排名。

SELECT
	id,
	name,
	score,
	DENSE_RANK() OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常见的四种排名函数的用法(sql)

4. NTILE
4.1 介绍

NTILE函数用于将一组数据按照数量均匀地分成若干份,并给每份数据编号。常见的用途是将数据进行分组或划分。
语法:

NTILE(n) OVER (ORDER BY expr)

其中n:指定将数据分成的份数。ORDER BY expr:指定按照哪个表达式来进行排序。

4.2 使用场景及例子

4.2.1 排名
通过order by进行排序得到排名。

SELECT
	id,
	name,
	score,
	NTILE(4) OVER(
	ORDER BY score DESC) AS ranks
FROM
	student_info

常见的四种排名函数的用法(sql)文章来源地址https://www.toymoban.com/news/detail-427455.html

到了这里,关于常见的四种排名函数的用法(sql)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql数据库limit的四种用法

    mysql数据库中limit子句可以被用于强制select语句返回指定的记录数。limit接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目;若果给定一个参数,则表示回记录行的最大

    2024年02月08日
    浏览(38)
  • CTF中常见的四种python逆向

    说在前面: 什么是pyc文件? pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高, pyc  文件是 Python 编译过的字节码文件。它是 Python 程序在运行过程中由源代码(通常是 .py 文件)自动或手动编译产生的二进

    2024年04月22日
    浏览(28)
  • script标签4种的四种用法,你知道几种?

    本文为HTML标准解读系列文章,其他文章详见这里。 在一个HTML页面中执行js脚本有很多方式,包括但不限于以下几种: 使用script标签执行脚本; 使用 javascript:URL 的导航; 使用DOM上的事件监听机制; 使用svg相关技术中的脚本能力; 在这些方式中,使用最多的无疑是第一种。

    2024年02月05日
    浏览(24)
  • 密码学---常见的四种密码攻击方式

    已知部分密文和加密算法,依次采用所有的密钥进行试译。 1、截获的部分密文 2、加密算法 由于掌握的资源少,一般采用穷举攻击。 经不起唯密文攻击的密码一般认为是不安全的。 攻击者能从已知的明文被变换成密文的方式中获得密钥 1、截获的部分密文 2、加密算法 3、已

    2024年02月07日
    浏览(28)
  • 磊科路由器常见故障的四种解决方法

      一、线路不通 1、在确保路由器电源正常的前提下首先查看宽带接入端,路由器上的指示灯可以说明宽带线路接入端是否正常,观察其灯闪亮状态,连续闪烁为正常,不亮或长亮不闪烁为故障,我们可以换一根宽带胶线代替原来的线路进行连接。 2、如果是无线路由器,查看

    2024年02月05日
    浏览(33)
  • cv::Mat的四种复制操作和cv::Mat作为函数形参的四种形式

    1、通过讲解cv::Mat类的深拷贝和浅拷贝来说明cv::Mat的四种复制操作 2、当cv::Mat作为函数形参时: cv::Mat temp 、 const cv::Mat temp 、 cv::Mat temp 、 const cv::Mat temp 这四种形参有什么区别?函数内部对Mat类形参数据的改变是否会影响到外面的Mat类实参数据? OpenCV2,数据结构Mat主要包含

    2024年02月10日
    浏览(50)
  • Java 项目防止 SQL 注入的四种方案

    SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据

    2024年02月09日
    浏览(38)
  • STM32延时函数的四种方法

    STM32延时函数的四种方法 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us()和毫秒级delay_ms()。本文基于STM32F207介绍4种不同方式实现的延时函数。 \\\\插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我私信,最近比较

    2023年04月26日
    浏览(28)
  • C语言实例,输出Hello,World的四种函数。

    在C语言中,输出“Hello, World”是学习的第一个例子。它可以帮助程序员了解如何在屏幕上打印文本。下面是几种输出“Hello, World”的方式: 使用printf()函数可以将指定的文本输出到标准输出流stdout。下面是使用printf()函数输出“Hello, World”的例子: 在这个例子中,我们包含了

    2024年02月09日
    浏览(35)
  • 解决VS中scanf()函数报错问题的四种方案(详细)

     scanf函数在VS中报错的主要原因是 scanf被认为不安全而被编译器默认设置为禁用。 那么如何解决这个问题呢 法一: 仅将函数 scanf 替换为 scanf_s 即可,其他语法不变。但scanf_s函数并不是C语言函数库里的标准函数,而是VS编译器所提供的函数,所以并不推荐用这种方法来解决

    2024年02月02日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包