Em um sistema gerenciador de banco de Postgres a colun...
Em um sistema gerenciador de banco de Postgres a coluna SALARIO da tabela COLABORADOR foi definida como NUMERIC(8,2) e a coluna JUROS foi definida como NUMERIC (2,2). Foi criada uma view com a seguinte expressão:
CREATE VIEW LISTA_VALOR_JUROS AS
SELECT NOME, SALARIO * JUROS as JUROS_MES
FROM COLABORADOR
Assinale a opção que apresenta o tipo de dado da coluna JUROS_MES criado na view resultante dessa expressão.
- Gabarito Comentado (1)
- Aulas (3)
- Comentários (4)
- Estatísticas
- Cadernos
- Criar anotações
- Notificar Erro
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Resposta correta: D - NUMERIC
Para compreender este gabarito, é necessário conhecer as definições de tipos de dados em Sistemas de Gerenciamento de Banco de Dados (SGBD), especificamente no PostgreSQL. A coluna SALARIO foi definida como NUMERIC(8,2), o que significa que ela pode armazenar números com até seis dígitos antes da vírgula e dois dígitos após a vírgula, totalizando oito dígitos. Já a coluna JUROS foi definida como NUMERIC(2,2), o que implica que pode armazenar até dois dígitos após a vírgula e nenhum dígito significativo antes da vírgula.
Quando se realiza a operação de multiplicação entre estes dois campos, o resultado pode ter um número de dígitos antes da vírgula que seja a soma dos dígitos máximos antes da vírgula de ambos os campos mais um possível dígito adicional por conta do "carry" da multiplicação, bem como a soma dos dígitos depois da vírgula.
Neste caso, a multiplicação de um NUMERIC(8,2) por um NUMERIC(2,2) pode resultar em até 6 (do SALARIO) + 0 (do JUROS) + 1 (do "carry") = 7 dígitos antes da vírgula, e 2 (do SALARIO) + 2 (do JUROS) = 4 dígitos após a vírgula, o que resultaria em um NUMERIC(11,4). No entanto, o PostgreSQL lida com isso de uma forma flexível, utilizando o tipo NUMERIC sem uma precisão e escala fixas para o resultado de operações aritméticas.
Portanto, a alternativa correta é a letra D, pois o PostgreSQL automaticamente escolhe o tipo NUMERIC sem uma precisão ou escala predefinida para acomodar o resultado da expressão aritmética, garantindo que nenhuma informação seja perdida por conta de limitações no número de dígitos antes ou após a vírgula.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Essa pega os desatendos, o que a questão pede depois de todo o enrolation é apenas o TIPO, logo não há outro senão no NUMERIC.
Como não foi informado o tamanho e a precisão do tipo NUMERIC, o postgres assume como apenas NUMERIC (e permite armezenar qualquer número com tamanho máximo e precisão máxima).
Só relembrando:
NUMERIC(x, y) => x é a precisão e y é a escala.
NUMERIC(2,2) => 0.00 a 0.99
NUMERIC(8,2) => 0.00 a 999999.99 (sempre subtria a escala da precisão, o que sobrar é o tamanho da parte inteira)
Corringindo o colega acima que se equivocou no termo NUMERIC(x, y) => x é a escala e y é a precisão
Se não forem informados a escala e precisão, o tipo que assume é o NUMERIC.
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo