分组排序函数——row_number()

1、MySQL8.0以上版本

用法1:无分组排序

Row_number() OVER(ORDER BY 字段 DESC)
例如:Row_number() OVER(ORDER BY 学生成绩 DESC)
表示不分班级,所有学生的成绩从高到低排序
用法2:分组排序
ROW_NUMBER() OVER(PARTITION BY 字段1 ORDER BY 字段2 DESC)
表示根据字段1分组,在分组内部根据字段2排序,这个函数计算的值就表示每组内部排序后的顺序编号
例如:ROW_NUMBER() OVER(PARTITION BY 班级 ORDER BY 学生成绩 DESC)
表示根据“班级”分组,在每个“班级”内部根据“学生成绩”排序,这个函数计算的值就表示每组内部排序后的
顺序编号
解释:
ROW_NUMBER( )  起到了编号的功能
partition by  将相同数据进行分区
order by    使得数据按一定顺序排序

2、MySQL5.7版本

用法1:无分组排序

例如:计算销售人员的销售额,结果按从高到低排序,查询结果中要包含销售的排名

SET @rank := 0;
SELECT
A.*,
@rank := @rank + 1 AS rank 
FROM
( SELECT sales_name, sum( sales ) FROM spm_order

GROUP BY sales_name

ORDER BY sum( sales ) DESC ) A

用法2:分组排序

例:计算销售人员在不同城市的销售额;

要求:结果根据销售人员在不同城市的销售额进行分组排序(降序),并且查询结果要包含分组排名

SET @r := 0,
@type := '';
SELECT
 @r :=
CASE WHEN @type = a.sales_name THEN
@r + 1 ELSE 1
END AS rowNum,
 @type := a.sales_name AS type,
  a.*
FROM
( SELECT sales_name, city, sum( sales ) FROM spm_order

GROUP BY sales_name, city

ORDER BY sales_name, sum( sales ) DESC ) a;

(0)

相关推荐

  • (6条消息) mysql取出每个分组中最新的记录

    原文:深度分析mysql GROUP BY 与 ORDER BY.mysql取出每个分组中最新的记录.mysql 分组取最新的一条记录(整条记录) 1.建表.插入测试数据 CREATE TABLE ` ...

  • 从零开始学SQL数据分析,SQL数据分组与透视

    数据分组是对相同类别的数据进行汇总,而数据透视表是通过对行或列的不同组合对数据进行汇总,所使用的汇总方法有求和.计数.平均值.标准差等,本文使用SQL对数据进行数据分组和数据透视,下面一起来学习. 普 ...

  • MySQL笔记——条件查询(排序、分组、聚合函数、分页)

    排序 关键词:ORDER BY(排序只是一种显示方式,不会影响数据库中的数据顺序) //语句格式  如果ASC/DESC不写 默认是 ASCSELECT * FROM 表 WHERE 字段=值 ORD ...

  • 6000字!SQL窗口函数详解。

    大家好,我是宝器! 今天想重提窗口函数.原因是前几天在群里提起了这个名字,忘了是什么缘由提起的,但令我吃惊的是,竟还有同学想从事数据分析却不知道窗口函数!那感觉就仿佛用勺子吃面条不知道有筷子这种好东西 ...

  • Mysql相关知识总结-持续更新~~~

    2019-12-11对varchar类型排序问题的解决 在mysql默认order by 只对数字与日期类型可以排序,但对于varchar字符型类型排序好像没有用了,下面我来给各位同学介绍varcha ...

  • oracle中分组排序函数用法

    项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据这里通过一张表的示例 ...

  • 公式来了!PQ里的列表排序函数超级好用!

    昨天,在文章<将内容按字符出现次数排列?这个在Excel里的难题因为PQ而轻松解决!>,通过多个步骤的操作,实现了相应的排序效果,但是,原文中的操作方法也存在一个bug: 即在有相同内容的 ...

  • 老板最爱的排序函数,员工业绩表现排名,瞬间就统计出来了!

    ✎ 大家好,我是雅客. 对销售业绩和学生的成绩进行排名,似乎是挺常见的场景,而在Excel当中,大家或许用的最多的就是排序功能了. 但这里我们要教各位一个新的函数,这个函数自带排名功能,他就是--RA ...

  • 这个新增的Excel排序函数,太牛X了!

    在Excel表格中排序很简单,选取数据表 - 升或降序排序 但,如果每天/月有几百个表格都需要排序,简单的操作重复N多次,也会把人累趴下.所以我们有必要把手工排序升级为自动排序:只要数据源更新,排序也 ...

  • Excel快速对比排序不一致的两列数据,不用函数,一秒找出不同

    Excel快速对比排序不一致的两列数据,不用函数,一秒找出不同

  • Counta函数真好用,自动编号、排序、统计数据等不在话下

    Counta函数是统计函数,应用好的话,有很多实用的技巧.今天就给大家分享counta函数的应用,自动编号,排序,统计人数等. 1.counta函数基本应用 Counta函数的使用方法是:COUNTA ...

  • 练习R:dplyr包arrange函数排序

    用r自带的鸢尾花iris数据集为例,我们只要前5行,新的myiris数据如下: 1.单个变量排序 按第1个指标升序 arrange(myiris,myiris[,1]) 按第一个指标的变量名称升序 a ...

  • 用函数实现排序的效果(降序排序)

    小伙伴们好,昨天分享了如何用函数实现升序排序的效果.今天再来说下降序排序的方法.数据源和昨天的一样,如下图所示.以分数为关键字对左表降序排序,结果如右表所示.分数相同的按先后顺序排序. 思路和昨天的基 ...