zoukankan      html  css  js  c++  java
  • 分组排序函数——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;

  • 相关阅读:
    cytoscape-d3-force api
    Python基础编程 模块的引入与定义
    更改Ubuntu内核版本
    Jupyter Notebook默认路径修改
    YJZH 前端部署记录 CentOS+Nginx+Vue
    dotnet core webapi centos 服务自启动
    Linux修改时区
    空间数据实战(1)——MySQL
    记录window.sessionStorage的一个小坑
    ElementUI默认表单项el-form-item间距修改
  • 原文地址:https://www.cnblogs.com/liuxiaomin/p/11958788.html
Copyright © 2011-2022 走看看