2017-07-26 7 views
2

トップレコードを取得するにはどうすればよいですか?たとえば、トップ10トップ5トップ3、私はAVGを使用しようとしましたが、人の記録。Laravel sqlがトップレコードを取得し、フィールド値を平均で取得する

SQL

if(!$field) { 
    $select = [ 
     DB::raw('AVG(sFieldGoalsPercentage) AS sFieldGoalsPercentage'), 
     DB::raw('AVG(sThreePointersPercentage) AS sThreePointersPercentage'), 
     DB::raw('AVG(sTwoPointersPercentage) AS sTwoPointersPercentage') 
    ]; 
} 

$player1 = DB::table('person_match_statistics') 
    ->where('competitionId', $competitionId) 
    ->where('personId', $player1Id) 
    ->where('periodNumber', 0) 
    ->orderBy('matchId', 'DESC') 
    ->select($select) 
    ->take($lastGame) 
    ->get(); 

アレイ

0 => {#543 ▼ 
    +"sFieldGoalsPercentage": 0.56 
    +"sThreePointersPercentage": 0.5 
    +"sTwoPointersPercentage": 0.63 
} 
1 => {#536 ▼ 
    +"sFieldGoalsPercentage": 0.4 
    +"sThreePointersPercentage": 0.4 
    +"sTwoPointersPercentage": 0.4 
} 
2 => {#539 ▼ 
    +"sFieldGoalsPercentage": 0.38 
    +"sThreePointersPercentage": 0.2 
    +"sTwoPointersPercentage": 0.67 
} 
+0

使用グループ別 –

+0

トップレコード?あなたのテーブルは何ですか?それから何が必要ですか? – apokryfos

+0

ユーザーのトップレコード – PenAndPapers

答えて

2

あなたはavg()収集方法を使用することができます。 take()avg()収集方法を使用して、新しいクエリを実行せずに平均を数えるその後

$player1 = DB::table('person_match_statistics') 
    ->where('competitionId', $competitionId) 
    ->where('personId', $player1Id) 
    ->where('periodNumber', 0) 
    ->latest('matchId') 
    ->select($select) 
    ->take(10) 
    ->get(); 

:トップ10レコードを取得します。例:

$top10 = $player1->avg('column'); 
$top5 = $player1->take(5)->avg('column'); 
$top3 = $player1->take(3)->avg('column'); 
+1

ありがとう@AlexeyMezenin – PenAndPapers

関連する問題