我正在尝试从交易表中得到每月的金额总和。我已经在下面写了cakephp函数来得到我想要的输出。
public function getLastSixMOnthsExpenses($since_date, $t_type)
{
$query = $this->find()->select([
'month' => $this->find()->func()->monthname([
'created' => 'identifier'
]),
'amount' => $this->find()->func()->sum('Transactions.amount')
])
->where([
'Transactions.created >='=> $since_date->modify('6 months ago')->startOfMonth(),
'Transactions.created <='=> $since_date->endOfMonth(),
'Transactions.transaction_type '=>$t_type
])
->group(['month'])
->order(['Transactions.created'=>'ASC'])
;
return $query;
}
我遇到以下错误
Syntax error or access violation: 1055 Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'kjoumaa_kamaljoumaa.Transactions.created' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
在不改变sql模式的情况下,如何在此处运行group by?
1条答案
按热度按时间h9vpoimq1#
改为按聚合排序。
因为您是按月份分组的,所以这些组中的所有
created
字段都将属于同一个月份,例如,一个组中的所有created
字段都将指向比另一个组中的字段更早或更晚的日期,因此您可以简单地从一个组中选择最小值或最大值:第一个
此外,如果您将月份选择为数字而不是名称,则可以在该字段上进行排序。