MySQL8.0 (ROW_NUMBER)窗口函数 排名


暂时理解函数意义,后面再进行优化,如果有关变量排序,查看这个大哥的

mysql的分组排序和变量赋值顺序

先查看一个例子:

# 按照每科课程分数进行排序,cid :课程编号, sid: 学号
select sid,cid,score,
row_number() over(partition by cid order by score desc) as 'rank',
RANK() over(partition by cid order by score desc) as 'rank2',
DENSE_RANK() over(partition by cid order by score desc) as 'rank3'
from sc

row_number() over(partition by sid order by score desc)

使用窗口函数,over在函数调用后包含一个字句,over有两种形式

row_number() {over(window_spec) | over (window_name)}

window_spec:

[window_name] [partition_clause] [order_clause] [frame_clause]


partition_clause:

PARTITION BY expr [, expr] ... 上面例子的语法

partition_clause PARTITION BY子句指示如何将查询行划分为组。给定行的窗口函数结果基于包含该行的分区的行。如果PARTITION BY省略,则存在由所有查询行组成的单个分区。


order_clause:

ORDER BY expr [ASC|DESC] [, expr [ASC|DESC]] ... 上面例子的语法

order_clauseORDER BY子句指示如何对每个分区中的行进行排序。根据ORDER BY子句相等的分区行 被视为对等。如果 ORDER BY省略,则分区行是无序的,没有隐含的处理顺序,并且所有分区行都是对等的。


RANK() over_clause

返回其分区中当前行的排名,带有间隙。同行被视为关系,并获得相同的排名。如果存在大于1的组,则此函数不会将连续的等级分配给对等组; 结果是不连续的排名数字。

应该使用此函数将ORDER BY分区行排序为所需的顺序。没有ORDER BY,所有行都是对等的。


DENSE_RANK() over_clause

返回其分区中当前行的排名,没有间隙。同行被视为关系,并获得相同的排名。此功能将连续的等级分配给对等组; 结果是,大于1的组不会产生不连续的等级数。

应该使用此函数将ORDER BY分区行排序为所需的顺序。没有ORDER BY,所有行都是对等的。

官方文档

MySQL8.0 ROW_NUMBER、RANK、DENSE_RANK窗口函数 分组排序排名的更多相关文章

  1. 大数据学习day29-----spark09-------1. 练习: 统计店铺按月份的销售额和累计到该月的总销售额(SQL, DSL,RDD) 2. 分组topN的实现(row_number(), rank(), dense_rank()方法的区别)3. spark自定义函数-UDF

    1. 练习 数据: (1)需求1:统计有过连续3天以上销售的店铺有哪些,并且计算出连续三天以上的销售额 第一步:将每天的金额求和(同一天可能会有多个订单) SELECT sid,dt,SUM(mone ...

  2. SQL Server - 四种排序, ROW_NUMBER() /RANK() /DENSE_RANK() /ntile() over()

    >>>>英文版 (更简洁易懂)<<<< 转载自:https://dzone.com/articles/difference-between-rownum ...

  3. Hive学习之路 (十四)Hive分析窗口函数(二) NTILE,ROW_NUMBER,RANK,DENSE_RANK

    概述 本文中介绍前几个序列函数,NTILE,ROW_NUMBER,RANK,DENSE_RANK,下面会一一解释各自的用途. 注意: 序列函数不支持WINDOW子句.(ROWS BETWEEN) 数据 ...

  4. ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()

    ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()   今天女票问我SqlServer的四种排序,当场写了几句Sql让她了解,现把相关Sql放上来. 首先, ...

  5. SQL Server中排名函数row_number,rank,dense_rank,ntile详解

    SQL Server中排名函数row_number,rank,dense_rank,ntile详解 从SQL SERVER2005开始,SQL SERVER新增了四个排名函数,分别如下:1.row_n ...

  6. 知方可补不足~row_number,rank,dense_rank,ntile排名函数的用法

    回到目录 这篇文章介绍SQL中4个很有意思的函数,我称它的行标函数,它们是row_number,rank,dense_rank和ntile,下面分别进行介绍. 一 row_number:它为数据表加一 ...

  7. SqlServer四种排序:ROW_NUMBER()/RANK()/DENSE_RANK()/ntile() over()

    首先,我们创建一些测试数据. if OBJECT_ID('Tempdb.dbo.#Tmp') is not null drop table #Tmp create table #Tmp ( name ...

  8. SQL中ROW_NUMBER()/RANK() /DENSE_RANK() OVER函数的基本用法

    一.ROW_NUMBER()的用法 语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN) row_number()从1开始,为每一条分组记 ...

  9. 好用的排名函数~ROW_NUMBER(),RANK(),DENSE_RANK() 三兄弟

    排名函数三兄弟,一看名字就知道,都是为了排名而生!但是各自有各自的特色!以下一个例子说明问题!(以下栗子没有使用Partition By 的关键字,整个结果集进行排序) RANK 每个值一个排名,同样 ...

随机推荐

  1. Lindström–Gessel–Viennot lemma定理 行列式板子

    https://blog.csdn.net/qq_37025443/article/details/86537261 博客 下面是wiki上的讲解,建议耐心地看一遍...虽然看了可能还是不懂 http ...

  2. opencv:形态学梯度

    #include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...

  3. 10day 系统安全优化

    系统安全相关优化(将一些安全服务进行关闭) 1. 防火墙服务程序 centos6 查看防护墙服务状态 /etc/init.d/iptables status 临时关闭防火墙服务 /etc/init.d ...

  4. 题解【洛谷P5436】【XR-2】缘分

    题目背景 世间万物都置身于缘分编织的大网中.缘分未到,虽历经千劫,却不能相遇.缘分到了,在草原上都能等到一艘船.--<一禅小和尚> 题目描述 一禅希望知道他和师父之间的缘分大小.可是如何才 ...

  5. mysql 数据库中的模式替换

    1, REPLACE 使用 -UPDATE tbl_name SET field_name = REPLACE(field_name,old_str,new_str) WHERE conditions ...

  6. .NET core 部署到Docker +Docker Protainer管理实现

    .NET core 部署到Docker +Docker Protainer管理实现 上次说到将.net core的应用程序发布到Linux中(https://www.cnblogs.com/Super ...

  7. argparse 模块使用

    import argparse,os data_func=["upload","download"]req_func=["getfunc", ...

  8. CSS3的一个伪类选择器:nth-child()

    CSS3的一个伪类选择器“:nth-child()”. Table表格奇偶数行定义样式: 语法: :nth-child(an+b) 为什么选择她,因为我认为,这个选择器是最多学问的一个了.很可惜,据我 ...

  9. 零基础入门python爬虫(一)

    ✍写在前面: 欢迎加入纯干货技术交流群Disaster Army:317784952 接到5月25日之前要交稿的任务我就一门心思想写一篇爬虫入门的文章,可是我并不会.还好有将近一个月的时间去学习,于是 ...

  10. MyBatis-Spring整合之方式4

    直接删除Mybatis的配置文件,修改Beans.xml文件的sqlSessionFactory的参数内容,如下: <!--配置sqlSessionFactory--> <bean ...