【SQL】根据一个字段分组求另一个字段的最大值,并带出其他字段

简介: 【SQL】根据一个字段分组求另一个字段的最大值,并带出其他字段

表结构:
在这里插入图片描述

以下示例是取最大创建时间的订单的name:
  • [ ] 方法1:

使用rank/rownumber/dense_rank函数做排序求出最大最小值,然后子查询查出排序第一的值。三个函数有区别。排序第一的聚合值有多个相同值的时候:rownumber会按照数据出现顺序取第一条值排序1,其他相同值顺延,rank会给相同值的都给出序列1,然后不会顺延序号,序号不连续。dense_rank与rank相同,都会给相同值给出序列1,但是会顺延序号,排序第二的会给出序号2,不同的话可以参考:https://www.cnblogs.com/heyang78/p/12684869.html

SELECT
    * 
FROM
    (
    SELECT
        order_id,
        `name`,
        create_time,
        ROW_NUMBER() over ( PARTITION BY order_id ORDER BY create_time desc) mm 
    FROM
        mutil_order 
    ) t 
WHERE
    t.mm =1
  • [ ] 方法2:

使用concat函数将分组字段和聚合字段拼接作为查询条件,但聚合字段有多个相同值的时候会带出多条。eg:多个最大值

SELECT
    order_id,
    `name`,
    create_time 
FROM
    mutil_order 
WHERE
    CONCAT( order_id, create_time ) IN (
    SELECT
        CONCAT(
            order_id,
        MAX( create_time )) 
    FROM
        mutil_order 
    GROUP BY
        order_id 
    )

有其他好方法可以互相交流呀-。-

目录
相关文章
|
1月前
|
SQL
sql server模糊查询、分组
sql server模糊查询、分组
12 1
|
4月前
|
SQL 大数据 HIVE
每天一道大厂SQL题【Day10】电商分组TopK实战
每天一道大厂SQL题【Day10】电商分组TopK实战
31 0
|
26天前
|
SQL
SQL语句两个字段或多个字段同时order by 排序
SQL语句两个字段或多个字段同时order by 排序
27 0
|
2月前
|
SQL JSON 关系型数据库
sql如何获取字段里的json值
sql如何获取字段里的json值
|
2月前
|
SQL
Sql语法:字段不为空
Sql语法:字段不为空
|
3月前
SQL-分组查询
SQL-分组查询
|
3月前
|
SQL 自然语言处理
leecode-SQL-1484-按日期分组销售产品
leecode-SQL-1484-按日期分组销售产品
27 0
|
3月前
|
SQL
四、SQL分组查询
四、SQL分组查询
32 0
|
3月前
|
SQL Oracle 关系型数据库
sql语句两个字段合并或者两个字段拼接显示
sql语句两个字段合并或者两个字段拼接显示
|
3月前
|
SQL 自然语言处理 数据挖掘
「SQL面试题库」 No_115 按日期分组销售产品
「SQL面试题库」 No_115 按日期分组销售产品