Агрегатная функция, такая как avg()
, должна возвращать общую форму interval
, поскольку среднее значение для нескольких значений может находиться между ними.Это определенно не изменится в будущих выпусках.Кроме того, типы данных идентичны внутри.Только наименее значимые части усекаются.
Поведение аналогично другим типам данных.Если вы вычислите среднее значение по столбцу integer
, вы получите результат типа numeric
, который может содержать точные результаты.
Если вы хотите, чтобы результаты были усечены (не вашизапрос), вы всегда можете явно привести к interval hour to minute
.
SELECT avg(i)::interval hour to minute from mytbl;
Я не могу много сказать о других СУБД.Может быть, дополнительные ответы можно заполнить здесь?