[SQL挖掘机] - 窗口函数 - rank

news/2024/10/30 11:18:16/

介绍:

rank() 是一种常用的窗口函数,它为结果集中的每一行分配一个排名(rank)。这个排名基于指定的排序顺序,并且在遇到相同的值时,会跳过相同的排名。

用法:

rank() 函数的语法如下:

rank() over ([partition by 列名1, 列名2, ... order by 列名 [asc|desc], ...])

在这个语法中,partition by 可选,表示按照指定的列或表达式对结果集进行分区。每个分区都会生成一个独立的排名序列,使得排名在每个分区内唯一。

order by 用于指定排序顺序,可以根据一个或多个列进行排序。可以使用 asc(升序,默认值)或 desc(降序)来指定排序方式。

举例:

下面是一个示例,展示如何使用 rank() 函数:
假设我们有一个名为 scores 的表,其中包含学生的成绩信息,如学生姓名(studentname)和成绩(score)。我们想要根据成绩的降序,为每个学生生成一个排名。

select 
studentname, score,
rank() over (order by score desc) as ranking
from scores;

在这个例子中,我们使用 rank() 函数创建了一个名为 ranking 的列,它包含了根据 score 降序排序后的排名。结果集中的每一行都分配了一个排名,相同分数的学生将会共享相同的排名。

需要注意的是,rank() 函数可能会跳过排名。例如,如果有两个学生的成绩并列第1名,那么下一个成绩就会被跳过,直接排名第3名。


http://www.ppmy.cn/news/991450.html

相关文章

数字转义汉字数字显示的简单研究

最近有个需求,需要显示汉字数字,比如一二三四五…这样子,问题看起来挺简单,但我没有找到有自带这样的转换的方法,数字转汉字数字,挺有意思的,就简单研究了一下; 百度了一下&#xff…

ARM基础(6):内存屏障指令之DMB、DSB和ISB详解

内存屏障是一个通用术语,用于指代一条或多条指令,它们强制处理器在执行加载(load)或存储(store)指令时进行同步事件。ARMv7-M 和 ARMv6-M架构都提供了三个内存屏障指令来支持内存顺序模型。这三个内存屏障指令分别是:DMB、DSB和ISB。 文章目录…

MYSQL要一系列相同的数据类型才能使用多重排序,如果破防了就可以像我这次一样去用内嵌查询:就能实现对不同数据类型的多次排序

MYSQL要一系列相同的数据类型才能使用多重排序,如果破防了就可以像我这次一样去用内嵌查询:就能实现对不同数据类型的多次排序 <select id"getPage" resultType"com.wty.models.task.domain.Task"><if test"priorityType true">SEL…

打卡力扣题目十一

#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 四、区别 关于 ARTS 的释义 —— 每周完成一个 ARTS&#xff1a; ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ●…

【多线程中的线程安全问题】线程互斥

1 &#x1f351;线程间的互斥相关背景概念&#x1f351; 先来看看一些基本概念&#xff1a; 1️⃣临界资源&#xff1a;多线程执行流共享的资源就叫做临界资源。2️⃣临界区&#xff1a;每个线程内部&#xff0c;访问临界资源的代码&#xff0c;就叫做临界区。3️⃣互斥&…

计算机中存储器的层次结构

现代的存储器体系结构是这样的&#xff1a; 越往上访问速度越快&#xff0c;更小&#xff0c;成本也越高。越往下访问速度越慢&#xff0c;更大&#xff0c;成本也越低。 在最高层&#xff08;L0&#xff09;是少量快速的CPU寄存器&#xff0c;CPU可以在一个时钟周期内访问他…

jdk1.7与jdk1.8的HashMap区别1-基本结构与属性对比

一、数据结构差别 1.7&#xff1a;数组链表 1.8&#xff1a;数组链表红黑树 当链表的长度大于8时&#xff0c;数组长度大于64&#xff0c;原来的链表数据结构变为红黑树 二、HashMap中的关键属性和方法区别 方法/变量/类 JDK7 JDK8 备注 DEFAULT_INITIAL_CAPACITY 16 16…

Git分布式版本控制工具和GitHub(一)--简介

一.Git概述 1.Git简介 【1】什么是Git? Git就是代码版本管理工具。 【2】为什么要使用Git &#xff08;1&#xff09;版本控制 写代码就是不断写BUG的过程&#xff08;当然我们是不会这么说的&#xff09;&#xff0c;很多时候你写了100行代码之后&#xff0c;突然醒悟&…