2016-05-03 4 views
0

У меня есть 2 colums. Один из них - datetime (imeromina_metrisis), а другой - целые (apotelesma). То, что я пытаюсь сделать, - получить среднее целое число за каждый день, чтобы я мог отправить его на график. Вы знаете, как я могу это сделать?Laravel Eloquent - Найти среднее количество дней в месяц

Это мой стол here

+0

Есть ли у 'xronos_metrisis' колонка любой подшипник на ваши результаты, или оно должно быть проигнорировано для целей этих средних? Кажется, это столбец группировки. – alexrussell

+0

Ηι, я не хочу 'xronos_metrisis'. Мне нужен только средний «apotelesma» за каждый день. – Konstantinos

ответ

0

Вероятно, что-то вроде этого.

$avg = Model::where('imeromina_metreisis', $carbon)->avg('apotelesma'); 

См:
https://laravel.com/docs/5.1/queries#aggregates

Просто быть в курсе вашей даты столбца. $carbon - это переменная, представляющая объект даты и времени Carbon, который широко используется Laravel. Если среднее значение равно целому дню, но вы используете datetime (включая часы/минуты/секунды), вы захотите сделать что-то вроде этого.

$carbon = Carbon::now()->startOfDate(); 
$avg = Model::where('imeromina_metreisis', '>=', $carbon) 
    ->where('imeromina_metreisis', '<=', $carbon->copy()->endOfDay()) 
    ->avg('apotelesma'); 

И да, это встроенные методы Углерода. Это действительно отличная библиотека.

Редактировать: Дополнительная документация по углероду. Я думаю, вам нужны произвольные дневные диапазоны.
http://carbon.nesbot.com/docs/

+0

Я предполагаю, что вопрос заключается не только в том, чтобы получить среднее значение для 'apotelesma' для данного' imerominia_metrisis', но вместо этого получить сгруппированные (по дате только, игнорируя время) результаты для итерации. – alexrussell

+0

Да @alexrussell вы правы. – Konstantinos

1

Нам нужно сначала получить формат DATE вместо использования DATETIME, так как вам нужны данные за каждый день. Попробуйте этот запрос

$data = DB::table('table_name') 
     ->select(DB::raw('avg(apotelesma) as count, DATE(imeromina_metrisis) day')) 
     ->groupBy('day') 
     ->get(); 

сослаться как выбрать сырец выражение here

+0

Попробуй это – Konstantinos

Смежные вопросы