Я выполняю sum() целочисленного столбца и хочу привести результат к типу bigint, чтобы избежать ошибки. Однако, когда я пытаюсь использовать sum(myvalue)::bigint, это все равно выдает ошибку вне допустимого диапазона.
Есть ли что-нибудь, что я могу сделать с запросом, чтобы заставить это работать? Или мне нужно изменить тип столбца на bigint?
sum(myvalue)::bigint
означает вычисление агрегатной функцииsum
поmyvalue
, а затем приведение результата кbigint
, поэтому к моменту приведенияsum()
уже выбрал тип результата. - person IMSoP   schedule 26.11.2013bigint for smallint or int arguments, numeric for bigint arguments, double precision for floating-point arguments, otherwise the same as the argument data type
, поэтому внутреннее приведение в любом случае может не понадобиться. На самом деле количество строк, необходимое для переполнения bigint суммой целых чисел, скорее всего, сначала потерпит неудачу по другим причинам (например, по дисковому пространству, пропускной способности ввода-вывода и т. д.). Хотя я видел несколько крайних случаев, когда он действительно переполнялся. - person Nisan.H   schedule 26.11.2013