如果之前已经提出这个问题,我道歉。我试图进行搜索,但可能没有使用与其他人相同的措辞,所以我的搜索没有任何结果。
我有一个超过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
声明中做错了什么?
答案 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