在 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.
我遇到了一个问题,我有 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.