问题描述
SELECT date_trunc('day',created_at) AS hour_stamp,(extract(hour FROM created_at)::int / 60) AS min_slot,count(*),max(e4) as kwh
FROM energydata_1001
WHERE api_key_value= 'YaB8JCcE'
AND date(created_at) >= '2020-11-30 23:59:59'
AND date(created_at) <= '2020-12-16 00:00:00'
GROUP BY 1,2
ORDER BY 1,2;
我已经在 Laravel Query Builder 中编写了这个查询
$rnd = DB::table('energydata_1001')
-> select (DB::raw("date_trunc('day',created_at) AS hour_stamp",'(extract(hour FROM created_at)::int / 60) AS min_slot'),DB::raw('count(*)'),DB::raw('max(e4) as kwh'))
->where ('api_key_value','=','YaB8JCcE')
->where ('created_at','>=','2020-11-30 23:59:59')
->where ('created_at','<=','2020-12-29 00:00:00')
->groupBy('1','2')
->orderByRaw('1','2')
->get();
当我在我的 Postgresql 中运行此查询时,它可以工作并显示数据。
解决方法
试试这个:
$rnd = DB::table('energydata_1001')->select(DB::raw('DATE_TRUNC(\'day\',created_at) AS hour_stamp'));
/* select statements */
$rnd = $rnd->addSelect(DB::raw('(EXTRACT(hour FROM created_at)::int / 60) AS min_slot'));
$rnd = $rnd->addSelect(DB::raw('COUNT(*)'));
$rnd = $rnd->addSelect(DB::raw('MAX(e4) AS kwh'));
/* where clause */
$rnd = $rnd->where('api_key_value','YaB8JCcE');
$rnd = $rnd->where('created_at','>=','2020-11-30 23:59:59');
$rnd = $rnd->where('created_at','<=','2020-12-29 00:00:00');
$rnd = $rnd->groupBy(1,2);
$rnd = $rnd->orderBy(1);
$rnd = $rnd->orderBy(2);
$rnd = $rnd->get();