Я хочу выполнить функцию агрегирования и добиться определенного результата, который группируется по дате, удаляя время из datetime
.
Всякий раз, когда я группирую по created_at
, ошибки не будет, но она будет группироваться по datetime
, и результат не будет точным.
У меня есть этот запрос:
Ваш запрос кажется правильным, но я думаю, что вы забыли получить ключевое слово as
,
$revenuereports = DB::table('cloudsubscriptions as c')
->select(
'c.service_name',
DB::raw('COUNT(*) as total_users'),
DB::raw('SUM(c.amount) as total_amount'),
DB::raw('DATE(c.created_at)as subscription_date') // you forgot as here
)
->groupBy('subscription_date')
->orderByRaw('c.created_at DESC');
$render=[];
if(isset($request->start_date) && isset($request->end_date))
{
$revenuereports=$revenuereports->whereBetween('created_at',[$request->start_date,$request->end_date]);
$render['start_date']=$request->start_date;
$render['end_date']=$request->end_date;
}elseif(isset($request->start_date))
{
$revenuereports=$revenuereports->where('created_at',$request->start_date);
$render['start_date']=$request->start_date;
}
if(isset($request->service_name))
{
$revenuereports=$revenuereports->where('service_name','like','%'.$request->service_name.'%');
$render['service_name']=$request->service_name;
}
//dd($revenuedetails->toSql());
$revenuereports= $revenuereports->orderBy('created_at','DESC');
$revenuereports= $revenuereports->paginate(15);
$revenuereports= $revenuereports->appends($render);
$data['revenuereports'] = $revenuereports;
return view('report.revenueReport',$data);
Я ожидаю, что результат будет отфильтрован по subscription_date (без времени)
"SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец« subscription_date »в« групповом операторе »(SQL: выберите количество (*) как совокупное значение из cloudsubscriptions
как c
, где created_at
между 2019-01 -01 и 2019-06-30 группировать по subscription_date
) "
Как мне решить, пожалуйста?