mysql - 查询获取MAX值和对应的日期
问题描述
桌子
+---------------------+-----------------------------+--------------+----------+
| timestamp | hostname | LICENSECOUNT | MAX_USED |
+---------------------+-----------------------------+--------------+----------+
| 2021-02-03 17:00:03 | server1 | 125 | 10 |
| 2021-02-03 17:00:06 | server2 | 415 | 50 |
| 2021-02-26 18:00:07 | server1 | 125 | 125 |
| 2021-02-26 18:00:09 | server2 | 415 | 415 |
| 2021-03-05 17:00:02 | server1 | 125 | 115 |
| 2021-03-05 17:00:04 | server2 | 415 | 315 |
我的查询- 获取过去 30 天内按服务器分组的许可证计数的最大值
select
timestamp, hostname, LICENSECOUNT, max(currentused) as MAX_USED
from
LICENSECHECKS
where
TIMESTAMP BETWEEN DATE_SUB(NOW(), INTERVAL 30 DAY) AND NOW()
group by hostname;
我的结果- 时间戳是数据集的开始(30 天前)
+---------------------+-----------------------------+--------------+----------+
| timestamp | hostname | LICENSECOUNT | MAX_USED |
+---------------------+-----------------------------+--------------+----------+
| 2021-02-03 17:00:03 | server1 | 125 | 125 |
| 2021-02-03 17:00:06 | server2 | 415 | 415 |
我想要的结果- 时间戳对应于日期
+---------------------+-----------------------------+--------------+----------+
| timestamp | hostname | LICENSECOUNT | MAX_USED |
+---------------------+-----------------------------+--------------+----------+
| 2021-02-26 18:00:07 | server1 | 125 | 125 |
| 2021-02-26 18:00:09 | server2 | 415 | 415 |
解决方案
在子查询选择语句中添加以下内容
ROW_NUMBER() OVER (PARTITION BY hostname ORDER BY currentuserid DESC) as RN
然后在外部查询 where 语句中提取 RN = 1 的行
推荐阅读
- python-2.7 - Python 2 Tornado 异步方法
- php - 无法使用 xmlapi 在 cpanel 中创建数据库
- html - 如何使用 HTML 在 Angular 6 的一列中设置 6 个按钮
- java - Mac App Store 提交失败,因为嵌入式 Java 11 框架包含现有的 CFBundleIdentifier
- angular - 如何使打字稿按顺序执行代码?
- javascript - 尝试在 javascript 中应用 CSS 转换
- sql - 我应该为议会投票模式使用哪种数据类型?
- c# - WPF PrintDialog.PrintVisual 在窗口 7 上不起作用
- python - Rasa 核心训练命令:无法识别的参数
- c - 谁能告诉我为什么添加功能不起作用?