前n个记录的平均值?

时间:2015-09-06 09:25:10

标签: mysql sql

我有这个SQL架构:http://sqlfiddle.com/#!9/eb34d

特别是这些是这个问题的相关栏目:

ut_id,ob_punti

我需要为每个用户(ut_id)获取“ob_punti”的TOP n(其中n为4)的平均值

此查询返回按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

但我无法弄清楚如何只获得前4个值的AVG。

你能帮忙吗?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

这与所问的问题并不完全相关,我提出这个问题是因为有人可能会从中受益。

我遇到了hackerearth问题,编写mysql查询以根据可用库存产品的平均数量获取前10条记录。

SELECT productName, avg(quantityInStock) from products 
group by quantityInStock 
order by quantityInStock desc
limit 10

注:如果有人可以更好地完成上述查询,欢迎修改。