繁体   English   中英

SELECT 具有 MAX(列值)的行和相应的时间,按名称区分

[英]SELECT rows with MAX(column value) with corresponding time, DISTINCT by name

我想 select 与其对应的发生时间和小时的最大值,其名称为 DISTINCT

我的时间是 str 数据类型。 我们是否在这里使用自内连接来这样做?

我的桌子是:

name    high             time                
-------|-----|---------------------------
name 1 | 12  | 2020-05-25 12:01:00-04:00 
name 1 | 14  | 2020-05-25 12:02:00-04:00
name 1 | 16  | 2020-05-25 12:03:00-04:00
name 2 | 12  | 2020-05-25 12:01:00-04:00 
name 2 | 11  | 2020-05-25 12:02:00-04:00
name 2 | 10  | 2020-05-25 12:03:00-04:00
name 3 | 21  | 2020-05-25 12:01:00-04:00 
name 3 | 23  | 2020-05-25 12:02:00-04:00 
name 3 | 22  | 2020-05-25 12:03:00-04:00 

我想要的结果是

  name   hour            datetime           max_high
--------|-----|---------------------------|--------
 name 1 | 12  | 2020-05-25 12:03:00-04:00 | 16   
 name 2 | 12  | 2020-05-25 12:01:00-04:00 | 12
 name 3 | 12  | 2020-05-25 12:02:00-04:00 | 23

非常感谢!

ROW_NUMBER将是 go 的一种方式:

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTTITON BY name ORDER BY high DESC) rn
    FROM yourTable
)

SELECT
    name,
    HOUR(CAST(datetime AS timestamp)) AS hour,
    datetime,
    high AS max_high
FROM cte
WHERE rn = 1
ORDER BY name;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM