知识库
并发编程
  • 分类
  • 标签
  • 归档
友情连接

luoliang

吾生也有涯,知也无涯
并发编程
  • 分类
  • 标签
  • 归档
友情连接
  • ROW_NUMBER函数的使用
    • 需求描述
    • 实现方案
      • 总结
  • database
weiluoliang
2024-04-08
目录

ROW_NUMBER函数的使用

# 需求描述

查询统计经常有这样的需求:需要根据某个字段进行分组,然后获取每个分组的一条数据,举例子:有一张订单表(t_order),包含 order_id,user_id,price,title,create_time ... ,需要查询每个用户的第一个订单。如何写这条SQL?ROW_NUMBER在这种场景下就非常有用了。

# 实现方案

直接看SQL:

SELECT
    user_id,
    order_id,
    price ,
    title,
    create_time
FROM
    (
        SELECT
            user_id,
            order_id,
            price ,
            title,
            create_time
            ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY create_time) AS rn
        FROM
            recharge_table
    ) t
WHERE
    rn = 1
ORDER BY
    create_time;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

PARTITION BY user_id ORDER BY create_time 字段解析:

  1. PARTITION BY user_id: 根据 user_id 进行分组
  2. 在分组内根据create_time 进行排序

ROW_NUMBER() OVER (..) as rn 则是对组内的排序进行编号

要查询分组内的第一条数据,我们只需要在外面在包装一层sql,限制只查询 rn =1 即可

# 总结

  1. 先根据一个字段进行分组
  2. 在分组内做排序并编号
  3. 查询编号等于1的数据
#MySQL
上次更新: 2024/04/08, 20:31:17
最近更新
01
Linux常用命令
09-04
02
SpringBoot启动脚本
08-31
03
安装监控grafana
08-30
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式