[英]Query to get MAX value and corresponding date
桌子
+---------------------+-----------------------------+--------------+----------+
| 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 |
在子查詢 select 語句中添加以下內容
ROW_NUMBER() OVER (PARTITION BY hostname ORDER BY currentuserid DESC) as RN
然后在外部查詢 where 語句中提取 RN = 1 的行
您可以使用:
select lc.*
timestamp, hostname, LICENSECOUNT, max(currentused) as MAX_USED
from LICENSECHECKS
where lc.currentused = (select max(lc2.currentused)
from licensechecks lc2
where lc2.timestamp >= now() - interval 30 day and
lc2.hostname = lc.hostname
);
筆記:
timestamps
。now()
有一個時間組件。 我懷疑您可能想要curdate() - interval 29 day
類的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.