我的桌子设置如下:
id . int(11) PK
key . char(4) PK
timestamp . datetime PK
value . double
我在此表中记录了IoT传感器数据的多个时间序列测量结果。
例如,key
可能类似于temp
或humidity
。
对此进行查询:
SELECT * where
id =496 and key == temp;
SELECT * where
id =496 and key == humidity;
对于相同的id
,这两个都准确地排列在timestamp
上。
combine
最好的方法是(由于缺乏更好的用语)这两个查询的结果是什么?
联接来自不同表的数据 https://codeinthehole.com/tips/joining-between-date-and-datetime-fields-in-postgres/
答案 0 :(得分:0)
如果要将两个读数都返回到同一记录中,则可能需要“自连接”表-如下所示将其自身连接起来:
SELECT T1.timestamp, T1.id, T1.key, T1.value, T2.key, T2.value
FROM Table AS T1
INNER JOIN Table AS T2 ON T2.id = T1.id
WHERE (T1.key LIKE 'temp' AND T2.key LIKE 'humidity')
答案 1 :(得分:0)
有条件聚合:
select
id, timestamp,
max(case key when 'temp' then value end) temp,
max(case key when 'humidity' then value end) humidity
from tablename
where id = 496 and key in ('temp', 'humidity')
group by id, timestamp
我假设存在相同的timestamp
1 value
和1 key = 'temp'
value