2017-11-13 23 views
1

私は、注文のモデルを持つlaravelアプリケーションを持っています。Laravel DB :: Raw with Average

モデルが含まれています

id 
order_date 
value 

私は期間全体の平均毎日の総売上値を返すように探しています。例えば

、私は日を越え、総毎日の値が、その後の平均を返すように探していたサンプルデータセットの下に

1 | 2017-11-01 | 10.00 
2 | 2017-11-01 | 10.00 
3 | 2017-11-01 | 11.00 
4 | 2017-11-02 | 14.00 
5 | 2017-11-03 | 1.00 
6 | 2017-11-03 | 18.00 
7 | 2017-11-03 | 10.00 
8 | 2017-11-03 | 10.00 
9 | 2017-11-04 | 105.00 
10 | 2017-11-04 | 10.00 

を参照してください。上記のための答えが得られ

1/11/2017 = 31 
2/11/2017 = 14 
3/11/2017 = 39 
4/11/2017 = 115 

:無視され、その注文を平均化されていることで、私は以下の雄弁なクエリを試みたが、右の値の取得に失敗しましたしました49.75

は、それはほとんどのグループのようなものですいくつかの1つ私は正しい方向に私を指すことができますか?

$avg = Order::whereBetween('order_date',array(Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth()))->groupBy('order_date')->avg('value'); 

答えて

0

お気づきのように、現在のクエリでは、日数ではなく日付ごとの平均値が使用されます。あなたは、いくつかの部門を使用するクエリを微調整する必要があります:

$avgValue = Order::whereBetween('order_date',array(Carbon::now()->startOfMonth(), Carbon::now()->endOfMonth())) 
->selectRaw('SUM(value)/COUNT(DISTINCT order_date) AS order_average') 
->first(); 

あなたは$avgValue->order_average

で値を得ることができる必要があります