0
私はプレイヤーに対してポイントを含むデータベーステーブルを持っています。シングルプレイヤーはテーブルに複数のレコードを持っています。私はplayer_idでレコードをグループ化する必要があります。そして、私は各グループの最初の3つのレコードの平均を取得しようとしています。私は昨晩、これに到達しようとしました。しかし、私はこれを解決する運がなかった。Laravel各グループから最初の3つのレコードのAVG値を取得する方法
これは私の最初のコードである、と私は、各グループの最初の3つのレコードのAVGは(player_idによってグループ化)を取得するために、これを変更する必要が
$oSelect = DB::table('statistics')
->where('statistics.league_id', $league_id)
->select('id, AVG('statistics.points as points'),player_id, scheduled')
->orderBy('statistics.scheduled','DESC')
->groupBy('statistics.player_id');
は、高度な
ルックスでオプションONLY_FULL_GROUP_BY eは、あなたは私の質問を誤解しています。私が望むのは、データセット全体を制限するのではなく、各グループを制限することです。 (各プレイヤーの最初の3レコードを取得してAVGを取得します) –
申し訳ありませんが、サンプルコードが間違っていて、必要に応じて単純すぎます。しかし、私はこの複雑な問題を解決するためにLaravel DBのファサードを使用してコードを混乱させるかもしれないと言うことができ論理的ではありません。ストアドプロシージャを使用し、コード側から関数を呼び出すことをお勧めします。各グループのレコードを制限する方法を知りたい場合は、このページをチェックアウトしてください: –
https://stackoverflow.com/questions/12113699/get-top-n-records-for-each-group-of-grouped-results –