首页 > 解决方案 > 没有 GROUP by 的数据集 SQL Oracle 中的天数

问题描述

group by需要在不使用子句的情况下计算一组数据的移动范围。当我计算平均值和之前的平均值时,我只需要考虑现有值。我不能不使用 DIFFDATE(start-end)。

另一个限制是我需要在行级别进行,因为我需要将其作为预先计算的值(分母)来计算 AVG 移动范围。

例子

目前我正在使用窗口函数来计算平均值和以前的平均值。

ROUND(AVG(SUMCOUNTSFT3) OVER (partition by to_date(to_char(DATETIMEOFREADING, 'DD/MM/RR'))),2) as AVG_SUMCOUNTSFT3,
            
ROUND(AVG(SUMCOUNTSFT3) OVER (order by to_date(to_char(DATETIMEOFREADING, 'DD/MM/RR')) RANGE between interval '1' day preceding AND interval '1' day preceding),2) as  LAG_VAL

这是一些示例数据,您可以看到我有多个传感器读数。我计算了当天和前一天的平均值。然后我将通过 |Xi - Xi-1| 计算数据点之间的差异,分母是我要计算的列。在某些情况下,如果传感器出现故障,我们将有一天没有读数,如果没有数据,我需要丢弃那些日子。

样本数据

我相信 ROW_NUMBER() 或 DENSE_RANK() 将使用分区子句完成这项工作。

标签: sqloracleanalytics

解决方案


推荐阅读