我有一张表,允许用户存储devices
的不同指标。 devices
可以是不同的类型(例如IoT),并且具有不同的指标。
例如车队跟踪设备可能具有speed
,distanceTravelled
,tripDuration
,而农业传感器可能具有temperature
,humidity
。
请注意,单个资产中不一定有相同数量的指标。例如tripDuration
每天可能仅更新几次,而speed
可能每分钟更新两次。
create table metric_history
(
device_id uuid not null,
timestamp timestamp,
metric_name text,
value double precision
);
我目前正在使用允许用户在其设备上运行自定义历史报告的系统。这些报告是汇总报告。
例如,跟踪车队的客户可能希望创建一份报告,显示其本周每个设备的情况:
MAX(speed)
AVG(speed)
COUNT(tripDuration)
AVG(tripDuration)
我将如何查询类似的内容(希望能有效地进行查询)?努力想出办法解决问题。
答案 0 :(得分:2)
使用FILTER
clause,例如:
QStandardPaths::AppDataLocation
答案 1 :(得分:0)
如果要在同一选择中获得所有值,则可以执行以下操作:
SELECT MAX(CASE WHEN device_id=X THEN value ELSE 0 END) AS speed,
AVG(CASE WHEN device_id=Y THEN value ELSE null END) AS tripDuration
FROM metric_history
P.S .:在AVG中舍弃某个值时,您需要将其设置为null,以免平均考虑该元素。