我有一个表格如下-
现在我需要报告每小时、每周、每月和每年的计数总数。它的总和可能为 0,但应包含在结果中。例如我需要如下结果-
$hourlyResult = array(
'00:01' => '5',
'00:02' => '9',
'00:03' => '50',
'00:04' => '5',
..............
..............
'00:55' => '95',
'00:56' => '0',
'00:57' => '20',
'00:58' => '33',
'00:59' => '5',
);
$weeklyResult = array(
'SAT' => '500',
'SUN' => '300'
.............
.............
'FRI' => '700'
);
如何在 cakephp 3 中构建查询?我得到了以下链接,但不能走得太远。
我做了什么-
$this->loadModel('Searches');
$searches = $this->Searches
->find('all')
->select(['created', 'count'])
->where('DATE(Searches.created) = DATE_SUB(CURDATE(), INTERVAL 1 DAY)')
->group(WEEK(date))
->hydrate(false)
->toArray();
pr($searches);
最佳答案
这里是你如何做到的。
按年求和
$query = $this->Searches->find();
$query = $this->Searches
->find()
->select([
'total_count' => $query->func()->sum('count'),
'year' => $query->func()->year(['created' => 'literal'])
])
->group(['year'])
->hydrate(false);
或者
$query = $this->Searches
->find()
->select(['total_count' => 'SUM(count)', 'year' => 'YEAR(created)'])
->group(['year'])
->hydrate(false);
按星期几求和
$query = $this->Searches->find();
$query = $this->Searches
->find()
->select([
'total_count' => $query->func()->sum('count'),
'day_of_week' => $query->func()->dayOfWeek('created')
])
->group(['day_of_week'])
->hydrate(false);
或者
$query = $this->Searches
->find()
->select(['total_count' => 'SUM(count)', 'day_of_week' => 'DAYOFWEEK(created)'])
->group(['day_of_week'])
->hydrate(false);
以相同的方式您可以按小时或按月获得总和。 在这里您可以阅读有关 CakePHP > Using SQL Functions 的信息和 date and time functions in MySQL .
关于php - 如何在 cakephp 3 中获取最近每小时/每天/每周/每年间隔的总计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38855851/