Tipos numéricos - AWS Clean Rooms

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Tipos numéricos

Os tipos de dados numéricos incluem números inteiros, decimais e números de ponto flutuante.

Tipos de inteiros

Use tipos de dados SMALLINT, INTEGER e BIGINT para armazenar números inteiros de vários intervalos. Não é possível armazenar valores fora do intervalo permitido para cada tipo.

Nome Armazenamento Intervalo
SMALLINT 2 bytes -32768 a +32767
INTEGER ou INT 4 bytes -2147483648 a +2147483647
BIGINT 8 bytes -9223372036854775808 a 9223372036854775807

Tipo DECIMAL ou NUMERIC

Use o tipo de dados DECIMAL ou NUMERIC para armazenar valores com uma precisão definida pelo usuário. As palavras-chave DECIMAL e NUMERIC são intercambiáveis. Neste documento, decimal é o termo preferido para esse tipo de dados. O termo numeric é usado genericamente para se referir aos tipos de dados de número inteiro, decimal e de ponto flutuante.

Armazenamento Intervalo
Variável, até 128 bits para tipos DECIMAL não compactados. Números inteiros assinados de 128 bits com até 38 dígitos de precisão.

Define uma coluna DECIMAL em uma tabela especificando uma precisão e escala:

decimal(precision, scale)
precisão

O número total de dígitos significativos no valor inteiro: o número de dígitos em ambos os lados do ponto decimal. Por exemplo, o número 48.2891 tem precisão de 6 e uma escala de 4. A precisão padrão, quando não especificada, é 18. A precisão máxima é 38.

Se o número de dígitos à esquerda da vírgula decimal em um valor de entrada exceder a precisão da coluna menos sua escala, o valor não poderá ser copiado na coluna (ou inserido ou atualizado). Esta regra aplica-se a qualquer valor que caia fora do intervalo de definição da coluna. Por exemplo, o intervalo permitido de valores para uma coluna numeric(5,2) é -999.99 a 999.99.

escala

O número de dígitos decimais na parte fracionada do valor, à direita do ponto decimal. Números inteiros têm uma escala de zero. Em uma especificação de coluna, o valor de escala deve ser menor ou igual ao valor de precisão. A escala padrão, quando não especificada, é 0. A escala máxima é 37.

Se a escala de um valor de entrada carregado em uma tabela for maior do que a escala da coluna, o valor será arredondado para a escala especificada. Por exemplo, a coluna PRICEPAID na tabela SALES é uma coluna DECIMAL(8,2). Se um valor DECIMAL(8,4) é inserido na coluna PRICEPAID, o valor é arredondado para uma escala de 2.

insert into sales values (0, 8, 1, 1, 2000, 14, 5, 4323.8951, 11.00, null); select pricepaid, salesid from sales where salesid=0; pricepaid | salesid -----------+--------- 4323.90 | 0 (1 row)

Contudo, os resultados de conversões explícitas dos valores selecionados a partir de tabelas não são arredondados.

nota

O valor positivo máximo que você pode inserir na coluna DECIMAL(19,0) é 9223372036854775807 (263 -1). O valor negativo máximo é -9223372036854775807. Por exemplo, uma tentativa de inserir o valor 9999999999999999999 (19 noves) causará um erro de transbordamento. Independentemente do posicionamento do ponto decimal, a maior string que o AWS Clean Rooms pode representar como um número DECIMAL é 9223372036854775807. Por exemplo, o maior valor que você pode carregar em uma coluna DECIMAL(19,18) é 9.223372036854775807.

Essas regras ocorrem por causa do seguinte:

  • Valores DECIMAL com 19 ou menos dígitos significativos de precisão de precisão significativos de precisão de precisão de precisão significativos de precisão de 8 bytes de precisão.

  • Valores DECIMAL com 20 a 38 dígitos significativos de precisão de precisão de precisão de precisão são armazenados como valores inteiros de 16 bytes.

Observações sobre o uso de colunas do tipo DECIMAL ou NUMERIC de 128 bits

Não designe arbitrariamente a precisão máxima às colunas do tipo DECIMAL, a não ser que você esteja certo de que sua aplicação requer essa precisão. Valores de 128 bits usam duas vezes mais espaço em disco do que valores de 64 bits e podem retardar o tempo de execução da consulta.

Tipos de ponto flutuante

Use os tipos de dados REAL e DOUBLE PRECISION para armazenar valores numéricos com precisão variável. Esses tipos são inexatos, o que significa que alguns valores são armazenados como aproximações, de tal forma que o armazenamento e retorno de um valor específico pode resultar em ligeiras discrepâncias. Se você precisar de armazenamento e cálculos precisos (como para quantidades monetárias), use o tipo de dados DECIMAL.

REAL representa o formato de ponto flutuante de precisão simples, de acordo com o padrão IEEE 754 para aritmética de ponto flutuante. Tem uma precisão de cerca de 6 dígitos e um intervalo de cerca de 1E-37 a 1E+37. Você também pode especificar esse tipo de dado como FLOAT4.

DOUBLE PRECISION representa o formato de ponto flutuante de precisão dupla, de acordo com o padrão 754 do IEEE para aritmética de ponto flutuante binário. Tem uma precisão de cerca de 15 dígitos e um intervalo de cerca de 1E-307 a 1E+308. Você também pode especificar esse tipo de dado como FLOAT ou FLOAT8.