SELECT dev_id, "desc", alert_time
FROM (
SELECT dev_id, "desc", alert_time,
ROW_NUMBER() OVER (PARTITION BY dev_id ORDER BY alert_time DESC) AS row_num
FROM alarm
) AS subquery
WHERE row_num = 1;
--这是一种终极解决办法
比max(时间) order by靠谱
该SQL查询通过ROW_NUMBER()函数,按照设备(dev_id)分组并按告警时间(alert_time)降序排列,选择每组的第一条记录,从而得到每个设备最新的告警描述和时间,这种方法被认为比直接使用MAX(alert_time)更可靠。
SELECT dev_id, "desc", alert_time
FROM (
SELECT dev_id, "desc", alert_time,
ROW_NUMBER() OVER (PARTITION BY dev_id ORDER BY alert_time DESC) AS row_num
FROM alarm
) AS subquery
WHERE row_num = 1;
--这是一种终极解决办法
比max(时间) order by靠谱
5478
1740

被折叠的 条评论
为什么被折叠?