MySQL8.0 ROW_NUMBER 调用案例

ROW_NUMBER()是一个窗口函数或分析函数,它为从1开始应用的每一行分配一个序号。
在这里插入图片描述
创建表和生成所需要的数据

CREATE TABLE chapter11 ( shopname VARCHAR(255) NULL, sales
VARCHAR(255) NULL, sale_date DATE NULL );

INSERT INTO chapter11 (shopname, sales, sale_date) VALUES(‘A’, ‘1’,
‘2020-01-01’); INSERT INTO chapter11 (shopname, sales, sale_date)
VALUES(‘B’, ‘3’, ‘2020-01-01’); INSERT INTO chapter11 (shopname,
sales, sale_date) VALUES(‘C’, ‘5’, ‘2020-01-01’); INSERT INTO
chapter11 (shopname, sales, sale_date) VALUES(‘A’, ‘7’, ‘2020-01-02’);
INSERT INTO chapter11 (shopname, sales, sale_date) VALUES(‘B’, ‘9’,
‘2020-01-02’); INSERT INTO chapter11 (shopname, sales, sale_date)
VALUES(‘C’, ‘2’, ‘2020-01-02’); INSERT INTO chapter11 (shopname,
sales, sale_date) VALUES(‘A’, ‘4’, ‘2020-01-03’); INSERT INTO
chapter11 (shopname, sales, sale_date) VALUES(‘B’, ‘6’, ‘2020-01-03’);
INSERT INTO chapter11 (shopname, sales, sale_date) VALUES(‘C’, ‘8’,
‘2020-01-03’);

1、按照销量进行排序

SELECT * from chapter11   order by sales ;

在这里插入图片描述


第二种写法:
SELECT   
    t.shopname,              -- 商店名称  
    t.sales,                 -- 销售额  
    t.sale_date ,              -- 销售日期    
-- 使用 ROW_NUMBER() 函数对结果进行编号,按照 sales 列的值进行排序  
 ROW_NUMBER() over(order by t.sales) as rank_num   
FROM chapter11 t

在这里插入图片描述

2、获取各A、B、C自组内的一个排名结果

	

SELECT   
    t.shopname, -- 商店名称  
    t.sales, -- 销售额  
    t.sale_date, -- 销售日期  
    -- 使用ROW_NUMBER()函数为每个商店生成一个行号,PARTITION by shopname按照商店名称进行分组,然后行号的生成基于销售额进行排序  
    ROW_NUMBER() over(PARTITION by shopname ORDER BY sales)  as rm  
FROM   
    chapter11 t;
    
#ROW_NUMBER(): 这是一个窗口函数,用于为每一行生成一个唯一的数字。

在这里插入图片描述
3、获取每个店铺销量最差的一天数据。

SELECT   
    t.shopname,  
    t.sales,  
    t.sale_date  
FROM   
    (  
        SELECT   
            shopname,  
            sales,  
            sale_date,  
            ROW_NUMBER() OVER (PARTITION BY shopname ORDER BY sales ) AS rm  
        FROM   
            chapter11  
    ) t  
WHERE   
    t.rm = 1;

第二种写法:

	with sales_bad  as(
	SELECT   
    t.shopname, -- 商店名称  
    t.sales, -- 销售额  
    t.sale_date, -- 销售日期  
    -- 使用ROW_NUMBER()函数为每个商店生成一个行号,PARTITION by shopname按照商店名称进行分组,然后行号的生成基于销售额进行排序  
    ROW_NUMBER() over(PARTITION by shopname ORDER BY sales)  as rm  
FROM   
    chapter11 t;
	)
	SELECT * from sales_bad  where rm =1

在这里插入图片描述

相关推荐

  1. MySQL商城数据表(80-88

    2024-01-01 21:40:02       32 阅读
  2. MySQL商城数据表(80-84

    2024-01-01 21:40:02       32 阅读
  3. 如何在mysql中生成类似oracle中的rownum行号?

    2024-01-01 21:40:02       32 阅读
  4. Django调用mysql

    2024-01-01 21:40:02       40 阅读
  5. 88张表-Mysql

    2024-01-01 21:40:02       36 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-01 21:40:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-01 21:40:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-01 21:40:02       82 阅读
  4. Python语言-面向对象

    2024-01-01 21:40:02       91 阅读

热门阅读

  1. 源码解析:mybatis调用链之获取sqlSession

    2024-01-01 21:40:02       59 阅读
  2. 浅析 Dockerfile 构建缓存:原理与优化方法

    2024-01-01 21:40:02       56 阅读
  3. python弹奏《起风了》

    2024-01-01 21:40:02       59 阅读
  4. 我自己的Mac装机软件推荐!

    2024-01-01 21:40:02       47 阅读
  5. 网络安全领域八大国际认证

    2024-01-01 21:40:02       55 阅读
  6. MySQL第七章:MySQL的基本函数

    2024-01-01 21:40:02       62 阅读
  7. CSS中背景设置——渐变色和放射渐变

    2024-01-01 21:40:02       45 阅读
  8. (C)一些题15

    2024-01-01 21:40:02       49 阅读
  9. springboot中使用mongodb进行简单的查询

    2024-01-01 21:40:02       56 阅读
  10. CMEMS数据下载

    2024-01-01 21:40:02       58 阅读
  11. 功能开发 -- 向埃隆·马斯克学习任务分解

    2024-01-01 21:40:02       55 阅读
  12. 基于SpringBoot的在线互动学习网站

    2024-01-01 21:40:02       60 阅读
  13. C语言学习

    2024-01-01 21:40:02       63 阅读
  14. R_handbook_统计分析

    2024-01-01 21:40:02       43 阅读
  15. 矩阵对角线遍历

    2024-01-01 21:40:02       66 阅读