last 聚合函数允许您获取按另一列排序的某一列的值。例如,last(temperature, time) 返回聚合组内基于时间的最新温度值。

重要

lastfirst 命令不使用索引,它们对组执行顺序扫描。它们主要用于 GROUP BY 聚合中的有序选择,而不是作为 ORDER BY time DESC LIMIT 1 子句的替代方案来查找最新值,后者会使用索引。

名称类型描述
value任意元素要返回的值
timeTIMESTAMP 或 INTEGER用于比较的时间戳

获取过去一天内每 5 分钟每个设备的温度

SELECT device_id, time_bucket('5 minutes', time) AS interval,
last(temp, time)
FROM metrics
WHERE time > now () - INTERVAL '1 day'
GROUP BY device_id, interval
ORDER BY interval DESC;

此示例将 first 和 last 与聚合过滤器一起使用,并避免输出中的空值

SELECT
TIME_BUCKET('5 MIN', time_column) AS interv,
AVG(temperature) as avg_temp,
first(temperature,time_column) FILTER(WHERE time_column IS NOT NULL) AS beg_temp,
last(temperature,time_column) FILTER(WHERE time_column IS NOT NULL) AS end_temp
FROM sensors
GROUP BY interv

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面