在每个 window - MariaDB/MySQL 中查找最新记录

Finding the latest record in each window - MariaDB/MySQL

在 MariaDb 10.3 中,如何为每个 window(或分区,我对这里的术语不太清楚)找到最新的(基于时间戳)行?

考虑以下 table 和数据

ItemID Itemname Value Timestamp
1 A 22 2021-12-22 20:01:00
1 A 2 2021-12-22 15:09:44
1 A 3 2021-12-22 14:39:49
2 B 54 2021-12-22 12:46:37
2 B 23 2021-12-22 12:17:52
2 B 43 2021-12-22 11:19:11
1 A 23 2021-12-22 04:00:58
1 A 53 2021-12-22 03:00:58
3 C 21 2021-12-21 04:00:58
2 B 74 2021-12-21 04:06:58
2 B 36 2021-12-21 04:06:09
1 A 34 2021-12-21 03:08:09

期望的输出

ItemID ItemName Value Timestamp
1 A 22 2021-12-22 20:01:00
2 B 54 2021-12-22 12:46:37
1 A 23 2021-12-22 04:00:58
3 C 21 2021-12-21 04:00:58
2 B 74 2021-12-21 04:06:58
1 A 34 2021-12-21 03:08:09

以下查询生成预期结果

WITH ordered AS (
  SELECT 
    *, 
    LAG(`ItemID`) OVER (ORDER BY `Timestamp` DESC) AS LastItem
  FROM dataset
)
SELECT `ItemID`, `ItemName`, `Value`, `Timestamp`
FROM ordered
WHERE `ItemID` <> `LastItem` OR `LastItem` IS NULL
ORDER BY `Timestamp` DESC

demo