Я пытаюсь выбрать логическое значение, где order.lastUpdated старше, чем 30 минут назад, но я получаю сообщение об ошибке:MySQL Неправильное использование функции группы с максимальным()
SQL state [HY000]; error code [1111]; Invalid use of group function; nested exception is java.sql.SQLException: Invalid use of group function
Вот запрос:
select
c.externalReference channelReference,
c.id channelId,
max(o.lastUpdated) lastUpdated,
sum(if(max(o.lastUpdated) < date_sub(now(), interval 30 minute), 0, 1)) beforeThreshold
from channel c
join order_item o on c.id = o.channelId
where date(o.lastUpdated) = date(now())
and o.lastUpdated > date_sub(now(), interval 1 hour)
group by c.externalReference;
Как я могу вернуть булево значение, если o.lastUpdated
старше 30 минут назад, когда я должен использовать max()
?
первая попытка группы по c.externalReference, c.id и посмотреть, если это делает никакой разницы – Moptan
я все еще получаю ту же ошибку. – crm
Вы не можете вложить агрегированные функции ('sum (max)'), 'max' нужно сделать в производной таблице и' sum' поверх нее. – dnoeth