2015-09-06 130 views
2

我有這樣的SQL架構:http://sqlfiddle.com/#!9/eb34d前n個記錄的平均值?

特別是這些都爲這一問題的相關列:

ut_id,ob_punti 

我需要讓高層的平均n(其中n爲4)的值「ob_punti」 爲每個用戶(ut_id)

此查詢返回通過ut_id分組的ob_punti所有值的AVG:

SELECT ut_id, SUM(ob_punti), AVG(ob_punti) as coefficiente 
     FROM vw_obiettivi_2015 
     GROUP BY ut_id ORDER BY ob_punti DESC 

但我不知道如何獲得只有TOP 4值的AVG。

你能幫忙嗎?

回答

1

它會給出頂部4的SUM和AVG。您可以用n代替4以獲得頂部n

select ut_id,SUM(ob_punti), AVG(ob_punti) from (
select @rank:=if(@prev_cat=ut_id,@rank+1,1) as rank,ut_id,ob_punti,@prev_cat:=ut_id 

from Table1,(select @rank:=0, @prev_cat:="")t 
order by ut_id, ob_punti desc 
) temp 
    where temp.rank<=4 
group by ut_id; 
+0

首先感謝您的回答!我得到一個單行結果(在生產環境中),而我需要每個ut_id的AVG和SUM(約100)。再次感謝 – eldblz

+0

@eldblz:如果答案解決了您的查詢,那麼您應該接受它作爲答案。 – seahawk

+0

對不起,但沒有解決請求,我需要AVG頂級4 ob_punti爲每個ut_id您的查詢返回只有一行! – eldblz