MYSQL前n行的平均值

时间:2016-09-06 00:52:26

标签: php mysql mysql-variables

如果之前已经提出这个问题,我道歉。我试图进行搜索,但可能没有使用与其他人相同的措辞,所以我的搜索没有任何结果。

我有一个超过6000行的表,我试图对特定列的前n行进行平均处理。在这种情况下,FOREX货币对的收盘价。 (我知道我可以使用PHP :: Trader,但我无法在我的服务器上安装它。)

我试过了:

SELECT *, (SELECT AVG(close) 
    FROM `2015_EURUSD_60min` 
    WHERE (id > (id - 20) AND id <= id)
) 
FROM `2015_EURUSD_60min`

这为每一行产生了相同的数字,我不知道为什么。 id列中的每个值都是连续的。我清理了数据以确保这一点。

我在SELECT声明中做错了什么?

1 个答案:

答案 0 :(得分:0)

我想我在问题中找到了一个答案(尽管表现很慢):

SELECT *, @s:=@s+1 serial_num, 
    (SELECT AVG(close) 
     FROM `2015_EURUSD_60min` 
     WHERE (id > (@s-20) AND id <= @s )) prior_id 
FROM `2015_EURUSD_60min`, (SELECT @s:=0) AS s