【发布时间】:2026-02-20 11:05:01
【问题描述】:
我有一个查询如下
SELECT *
FROM [VNPoller].[DBA].[uccpu1mUTMStats]
WHERE resid in (SELECT resid
FROM [VNPoller].[DBA].[ResourceView]
WHERE Dataset in
(SELECT dataset
FROM [VNPoller].[DBA].[DatasetTable]
WHERE datasetDescription LIKE '%CPU%'
)
AND devID = '1157')
order by dttm desc
我有一个每 5 分钟轮询一次的设备列表,每次轮询都会在表中添加一个具有最新值的新行,在这种情况下,我正在查看 CPU。但是,一个设备可能有多个 CPU,所以在过去的 5 分钟内我可能有 4 个 CPU 值,因此数据库中有 4 个新条目。每个 CPU 都有一个唯一的 resID。我需要查看 4 个驻留中每个驻留的 Max(最新 dttm 值。我的查询返回一整天的所有行。或者我可以得到是使用 max(dttm) 仅显示一个值,但我需要其他 3 个价值观。也许一张图片可以帮助解释。非常感谢任何可以在这里提供帮助的人
我只对查看前 4 个项目感兴趣(每个不同驻留的最大 (dttm)。其余的都是重复的,但用于早期时间戳
来自uccpu1mUTMStats 表的样本数据,实际上包含数千行:
dttm resID cpmCPUTotalMonIntervalValue
2018-09-28 22:10:00.000 294324 0
2018-09-28 22:10:00.000 294325 0
2018-09-28 22:10:00.000 294432 1
2018-09-28 22:10:00.000 294482 0
2018-09-28 22:10:01.000 294415 0
2018-09-28 22:10:01.000 294433 1
2018-09-28 22:10:01.000 294669 0
2018-09-28 22:10:02.000 294396 0
2018-09-28 22:10:02.000 294397 0
2018-09-28 22:10:02.000 294416 0
2018-09-28 22:10:03.000 294417 0
2018-09-28 22:10:03.000 294434 1
2018-09-28 22:10:03.000 294435 1
2018-09-28 22:10:04.000 294398 0
2018-09-28 22:10:04.000 294399 0
2018-09-28 22:10:04.000 294418 0
2018-09-28 22:10:05.000 294400 0
2018-09-28 22:10:05.000 294419 0
预期结果是:
dttm resID cpmCPUTotalMonIntervalValue
2018-10-05 15:21:37.000 294100 21
2018-10-05 15:21:24.000 294099 23
2018-10-05 15:20:53.000 294098 19
2018-10-05 15:20:16.000 294097 23
【问题讨论】:
-
您使用的是哪个 dbms?
-
添加一些示例表数据和预期结果 - 作为格式化文本,而不是图像。也可以看看*.com/help/mcve。
标签: sql sql-server max