0

我有如下数据,这是部分数据,缺少几行。考虑到以前的可用值,我需要数据的平均值。我们有任何函数可用于 sql 中的这种平均值吗? 

所需平均数:220 

10天的可用数据:

1st day: 100
4th day: 200
7th day: 300
10th day: 400

把它放在一个表格格式中:

Rows    Date        Partial Continuous(needed)
1       01-Aug-18   100     100     
2                           100
3                           100
4       04-Aug-18   200     200     
5                           200
6                           200
7       07-Aug-18   300     300     
8                           300
9                           300
10      10-Aug-18   400     400     
-----------------------------------
Average             250     220
-----------------------------------

我正在查看类似 select avg(partial*(nextdate-date))/(lastdate-firstdate) from mytable;

4

2 回答 2

0

使用用户定义的变量来填充缺失值。

SELECT AVG(normal)
FROM (SELECT IFNULL(continuous, @prev) AS normal, @prev := IF(continuous IS NULL, @prev, continuous)
      FROM (SELECT continuous
            FROM yourTable
            ORDER BY id) AS x
      CROSS JOIN (SELECT @prev := NULL) AS y
) as z
于 2018-08-09T01:53:16.397 回答
0

那么AVG()呢?

> SELECT AVG(Normal) FROM table WHERE something;
于 2018-08-09T01:53:26.027 回答