【发布时间】:2021-06-18 16:35:24
【问题描述】:
我有以下 SQL 脚本,它从 PostgreSQL 数据库视图表中返回以下数据。
SELECT
"V_data".macaddr,
"V_data".sensorid,
"V_data".ts,
"V_data".velocity,
"V_data".temp,
"V_data".highspeed,
"V_data".hightemp,
"V_data".distance,
FROM
sensordb."V_data"
WHERE
"V_data".macaddr like '%abcdef'
AND
(
("V_data".sensorid = 'abc1') or ("V_data".sensorid = 'a2bc') or ("V_data".sensorid = 'ab3c')
)
AND
"V_data".ts >= 1616370867000
ORDER BY
"V_data".ts DESC;
输出
| macaddr | sensorid | ts | velocity | temp | highspeed | hightemp | distance |
|---|---|---|---|---|---|---|---|
| abcdef | abc1 | 1616370867010 | 25 | 32 | 52 | ||
| abcdef | a2bc | 1616370867008 | 27 | 35 | T | 51 | |
| abcdef | ab3c | 1616370867006 | 26 | 30 | 50 | ||
| abcdef | abc1 | 1616370867005 | 24 | 36 | T | 50 | |
| abcdef | a2bc | 1616370867004 | 27 | 31 | 50 | ||
| abcdef | abc1 | 1616370867002 | 21 | 30 | T | 48 | |
| abcdef | ab3c | 1616370867000 | 22 | 33 | F | 46 |
我想聚合这些行,以便获得每个传感器 ts、速度、温度、距离的最新读数。 对于布尔值 highspeed 和 hightemp,如果没有可用的布尔值,我想要最新的可用布尔值或空单元格。
预期输出
| macaddr | sensorid | ts | velocity | temp | highspeed | hightemp | distance |
|---|---|---|---|---|---|---|---|
| abcdef | abc1 | 1616370867010 | 25 | 32 | T | T | 52 |
| abcdef | a2bc | 1616370867008 | 27 | 35 | T | 51 | |
| abcdef | ab3c | 1616370867006 | 26 | 30 | F | 50 |
我怎样才能简化这个任务?
谢谢。
【问题讨论】:
标签: sql postgresql aggregate-functions