Следующий запрос отлично работает:
select
floor(duration / 100) * 100 as bucket,
count(*) as count
from flights
group by floor(duration / 100) * 100
order by bucket asc
Однако я попытался автоматически настроить размер сегмента на диапазон значений, чтобы в общей сложности было 10 интервалов, охватывающих весь диапазон:
select
floor(duration / (max(duration)/10)) * (max(duration)/10) as bucket,
count(*) as count
from flights
group by floor(duration / (max(duration)/10)) * (max(duration)/10)
order by bucket asc
-- SYNTAX_ERROR: GROUP BY clause cannot contain aggregations or window functions: ["max"("duration"), "max"("duration")]
Идея в этом неудачном запросе состояла в том, чтобы использовать максимальное значение (при условии, что минимальное значение равно 0) для получения размера сегмента. Есть ли способ заставить это работать или использовать лучший подход вообще?