Точность агрегатной функции для типа данных «INTERVAL HOUR TO MINUTE» в SQL - PullRequest
3 голосов
/ 06 ноября 2011

Я использую очень маленькую базу данных, которая содержит таблицу со столбцом, содержащим данные типа INTERVAL HOUR TO MINUTE.Хотя это означает, что таблица будет хранить только временные интервалы с точностью до минуты, система баз данных, которую я использую (PostgreSQL), вернет интервал с микросекундной точностью для агрегатной функции, такой как AVG().Могу ли я полагаться на это поведение или возможно, что в будущем система базы данных будет возвращать значения с точностью до минуты?Как ведут себя другие СУБД в этом отношении?

Я спрашиваю, потому что значения в таблице не требуют более точной, чем минутная точность, но я ожидаю более высокую точность, когда использую статистическую функцию.

1 Ответ

3 голосов
/ 07 ноября 2011

Агрегатная функция, такая как avg(), должна возвращать общую форму interval, поскольку среднее значение для нескольких значений может находиться между ними.Это определенно не изменится в будущих выпусках.Кроме того, типы данных идентичны внутри.Только наименее значимые части усекаются.

Поведение аналогично другим типам данных.Если вы вычислите среднее значение по столбцу integer, вы получите результат типа numeric, который может содержать точные результаты.

Если вы хотите, чтобы результаты были усечены (не вашизапрос), вы всегда можете явно привести к interval hour to minute.

SELECT avg(i)::interval hour to minute from mytbl;

Я не могу много сказать о других СУБД.Может быть, дополнительные ответы можно заполнить здесь?

...