Laravel如何从每个组中获取前3条记录的AVG值

时间:2017-07-06 18:09:02

标签: php mysql laravel group-by eloquent

我有一个数据库表,其中包含针对玩家的点数。单个玩家在表格中有多个记录。我需要通过player_id对记录进行分组。我试图获得每组的前3条记录的平均值。我试着在最后一个晚上达到这个目的。但我没有任何运气可以解决这个问题。

这是我的初始代码,我需要修改它以获取每组的前3条记录的AVG(按player_id分组)

dictEnum

先谢谢你

1 个答案:

答案 0 :(得分:0)

试试这个:

$oSelect = DB::table('statistics')
      ->select(DB::raw('id, AVG(statistics.points) as points,player_id,scheduled'))
      ->where('statistics.league_id', $league_id)
      ->orderBy('statistics.scheduled','DESC')
      ->groupBy('statistics.player_id')->limit(3)->get();

注意:如果您遇到非聚合列错误,则必须将id列添加到按列分组列表或禁用mySql中的only_full_group_by选项

Disable ONLY_FULL_GROUP_BY