2014-10-03 63 views
0

我發現其他人有同樣的問題。然而,沒有任何解釋對我有用,說實話我不知道我明白爲什麼。所以,讓我給你我的情況:SQL:從最近的N個(兩個)條目獲得avg結果

有一個數據庫命名爲:enigma。 (ai),第二(int),第四(int)
該表具有3個條目:1 - 100 - 200/2 - 200 -200/3 - 300 - 400
我想要實現的是從最後兩個條目獲得第二個(int)avarage。
我期望的結果將是:250
我使用的代碼是:

select AVG(second) 
from (select second 
    from enigma 
    where (select count(*) from enigma as e 
      where e.second = enigma.second) <=2) as t 


然而結果總是200(所有條目的avarage)。
有人可以向我解釋爲什麼,並可能想出一個解決方案?

親切的問候。

回答

3

試試這個:

select avg(second) 
    from (select second 
      from enigma 
     order by number desc 
     limit 2 
     ) t 

SQLFiddle

+0

是的,這工作得很好,有什麼簡單的查詢,它已成爲。非常感謝你.. – 2014-10-03 14:07:41