mysql - 前 n 条记录的平均值?

标签 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。

你能帮忙吗?

最佳答案

它将给出前 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/

相关文章:

php - 为什么每次向 MySQL 插入数据时都会出现此错误?

php mysqli 基于与用户 session 关联的列数据求和

sql - SQL查询中日期为空时如何提取最大日期

mysql - 以分钟为单位计算两个日期之间的时间差

php - 删除链接无法获取要删除的项目的确切 ID

PHP:从txt文件中获取单个值

php - 如何解决这个mysqli错误

SQL 输入参数值

php - MySQL 外键约束不被尊重/遵守

php - sql时间戳无法显示正确的时间