SQL中分组排序函数row 您所在的位置:网站首页 sql语句中row_number SQL中分组排序函数row

SQL中分组排序函数row

2024-07-03 13:47| 来源: 网络整理| 查看: 265

MySQL8.0中引入了row_number()等窗口函数。以row_number()为例,该函数本身的作用就是对数据进行分组排序(分组依据在over()中)。而group by子句的功能也是先将数据机分组之后再进行计算。今天主要来看看分组排序函数和group by子句连用时是如何计算的。

以下面的order_2017数据为例:

来看下面的SQL查询语句:

从代码运行结果来看,row_number()函数跳出了我们用group by语句划定的分组,它是在group by 完成计算后得到的整个数据表中使用自己的分组标准(partition by)重新划定分组后再进行编号。这个与窗口函数的执行顺序有关。查阅mysql8.0文档可以看到如下内容:

大概意思就是,窗口函数只允许在select语句与order by语句中使用,并且是在where、group by、having执行得到结果之后,在order by、limit、select distinct 执行之前运行。下面来看一段SQL查询代码:

在上述代码中,order by子句中已经可以使用row_number()函数产生的计算列rn,从侧面验证了row_number()函数在order by子句运行之前先运行。

当然,对于其他的窗口函数:rank()、dense_rank()等,也依然适用。

另外,Mysql中的窗口函数可以参考:

MySQL8.0中的窗口函数_Sun_Sherry的博客-CSDN博客_mysql 窗口函数



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有