2014-05-22 149 views
0

我怎樣才能編輯下面這樣我的查詢的操作員部分,我想當前代碼工作其中id < = 14(這是t2.id < = t1.id如下所示)所以當t1 id = 14時,t2是從1到14的累積ID(就像現在這樣)。MySQL的移動平均計算

爲ID> 14我想接通操作者爲(t2.id = t1.id> = t1.id-2和< = t1.id)因此,當T1的ID = 15,T2。 id應該在13和15之間。當t1 id = 16時,t2.id應該在14和16之間,以此類推。

我這樣做是因爲當我在id = 14之後計算id爲col E時,我只對在移動平均數上得到前兩行C和D的平均值感興趣。

我的查詢有2個查詢,它更新列E.表看起來是這樣的:

-------------------------- 
id | A  | B | E | 
-------------------------- 
1 | NULL | NULL |NULL| 
-------------------------- 
2 | 4  | 6 |NULL| 
-------------------------- 
3 | 6  | 9 |NULL| 
-------------------------- 

這是我的查詢在那裏我得到了這個鏈接幫助:Mysql Nested sub queries unknown column error

Update t join 
    (SELECT t1.id ,ifnull(t1.A/AVG(t2.A),0) C ,ifnull(t1.B/AVG(t2.B),0) D 
    FROM t t1 
    JOIN t t2 
    ON  t2.id <= t1.id 
    group by t1.id) AS tt 
    on(t.id = tt.id) 
    SET E = (tt.C + tt.D)/2; 

謝謝,

回答

0

其中id<=14(這是t2.id <= t1.id如下所示)所以當t1 id =14t2是暨從1到14(如現在)的唯一ID。

Update t join 
(
SELECT t1.id ,ifnull(t1.A/AVG(t2.A),0) C ,ifnull(t1.B/AVG(t2.B),0) D 
FROM t t1 
JOIN t t2 
ON  case when t2.id < 15 then t2.id <= t1.id else t2.id=t1.id>=t1.id-2 and <=t1.id  end 
group by t1.id 
) tt on(t.id = tt.id) 
SET E = (tt.C + tt.D)/2; 
+0

我得到了第一部分的正確數據(id <15),但之後它是錯的。 – jxn