我有这个 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。
你能帮忙吗?
最佳答案
它将给出前 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;
关于mysql - 前 n 条记录的平均值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32421966/