mysql - 选择具有相应时间的 MAX(列值)的行,按名称区分
问题描述
我想选择最大值及其相应的发生时间和小时,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
将是去这里的一种方式:
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;
推荐阅读
- java - REST API 中的 Jersey 多部分表单数据既不使用 web.xml 也不使用 ResourceConfig
- html - 按图像替换项目符号
- java - 如何在用户登录并想用新密码更改旧密码时验证用户
- html - 用 XSLT 替换尖括号
- angular - Angular 材质 sidenav 和扩展插入填充到左侧,为什么?
- android - 在onBackPressed之外的活动中获取当前片段?
- azure - PnP Powershell Add-PnPOffice365GroupToSite Authorization_RequestDenied Azure Runbook
- pandas - 大熊猫每行的意思是大小为 5 的块
- java - 在 Spring RestController 中将 POJO 显式转换为 JSON 的最佳方法
- css - 需要帮助在 Bootstrap 主题的下拉菜单中添加背景颜色