在 AWS Athena 中按最大时间排序的具有相同列类型(但不同数据)的 4 个表的联合?

Union of 4 tables with same column types (but different data) order by max time in AWS Athena?

我遇到了一个问题,我有 4 个 table 看起来像这样:

device volume1 volume2 time
device_id x y time_devicemessage

每个 table 用于一个 设备 所以我有 4 个设备,它们以不同的时间戳发送消息。

我想知道如何将这 4 个 table 合并为 1,但仅显示每个 table 基于其时间戳的最后一个 volume 数据的查询。

所以它可能看起来像这样:

device volume1 volume2 time
deviceA lastvalue (x) lastvalue (y) time_devicemessageA
deviceB lastvalue (x) lastvalue (y) time_devicemessageB
deviceC lastvalue (x) lastvalue (y) time_devicemessageC
deviceD lastvalue (x) lastvalue (y) time_devicemessageD

非常感谢您的支持,不胜感激!

此致,鲁本。

你可以得到每个 table 的最后一行,然后 UNION 这四行,像这样:

SELECT device, volume1, volume2, time FROM device1 ORDER BY time DESC LIMIT 1

UNION 

SELECT device, volume1, volume2, time FROM device2 ORDER BY time DESC LIMIT 1

UNION 

SELECT device, volume1, volume2, time FROM device3 ORDER BY time DESC LIMIT 1

UNION 

SELECT device, volume1, volume2, time FROM device4 ORDER BY time DESC LIMIT 1;

我相信你想要的语法是:

(SELECT device, volume1, volume2, time
 FROM device1
 ORDER BY time DESC
 LIMIT 1
) UNION ALL
(SELECT device, volume1, volume2, time
 FROM device2
 ORDER BY time DESC
 LIMIT 1
) UNION ALL
(SELECT device, volume1, volume2, time
 FROM device3
 ORDER BY time DESC
 LIMIT 1
) UNION ALL
(SELECT device, volume1, volume2, time
 FROM device4
 ORDER BY time DESC
 LIMIT 1
);

请注意,将相似的信息存储在四个不同的 table 中被认为是糟糕的数据设计。最好所有数据都放在一个table.