如何解决埃斯珀Esper:从每个ID中获取最后一个值,并获取除最极端值以外的所有值的均值
我有5个温度传感器。我想计算平均温度4-不包括最高值(最高或最低)。
首先:std:unique(id)将为每个ID 1-5创建最后一个温度读数的窗口吗?
select
avg(tempEvent.temp) as meantemp
from
Event(id in (1,2,3,4,5)).std:unique(id) as tempEvent
第二:我如何更改select语句(可能在必要时使用表达式)以仅计算四个值的均值(不包括最极端的值)?
背景是,我想知道每个温度与平均值的偏差,但是我不希望平均值包含异常ID。否则,所有温度看起来都将偏离平均水平,但实际上只有一个水平。
解决方法
找到中间四个值的平均值很简单,尽管不如您的解决方案那么优雅。下面的代码适用于任意数量的温度。
SELECT
AVG(temp) AS meantemp
FROM (
SELECT
temp,COUNT(temp) AS c,RANK () OVER (PARTITION BY temp ORDER BY temp) AS r
FROM
[table]
)
WHERE
r > 1
AND r < (c-1)
;
关于您的第二个问题,我不确定我是否理解。您是否要从四个中间值中得出的值与四个值的平均值 的绝对偏差最大?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。