Valores Flutuantes em Perguntas de Engenheiro de Banco de Dados
Last updated: December 12, 2024
Visão Geral
Quando você cria uma pergunta de Engenheiro de Banco de Dados, pode fazer o upload de um CSV para criar uma tabela. Cada um dos sistemas de banco de dados suportados trata valores de ponto flutuante de maneira diferente. Este artigo fornece um exemplo para mostrar como cada sistema de banco de dados lida com os valores de ponto flutuante. Atualmente, o HackerRank suporta bancos de dados Microsoft SQL, MySQL, Oracle e DB2.
Amostra de Valores de Ponto Flutuante
O seguinte exemplo mostra como diferentes sistemas de banco de dados lidam com os dados. Ao criar uma pergunta de Engenheiro de Banco de Dados, leve em consideração que as consultas retornam resultados diferentes dependendo do sistema de banco de dados utilizado, e a pontuação é feita por comparação básica de strings.
Uma tabela chamada Employee com o seguinte CSV com 5 colunas. A coluna points é um float.
Id,cid,aid,points,score:
1,5608,1,0.59,4
1,5608,2,8.70,5
1,5608,3,4.99,1
1,5608,5,2.88,3
1,5608,9,0.79,1
1,5608,5,7.58,1
Para a consulta "SELECT * from Employee", os seguintes bancos de dados tratam os dados float das seguintes maneiras:
Oracle
Em Oracle, a coluna de pontos é do tipo FLOAT. A saída é a seguinte:
1 5608 1 .59 4
1 5608 2 8.7 5
1 5608 3 4.99 1
1 5608 5 2.88 3
1 5608 9 .79 1
1 5608 5 7.58 1
O banco de dados Oracle remove os zeros à esquerda.
MySQL
Em MySQL, a coluna de pontos é do tipo FLOAT. A saída é a seguinte:
1 5608 1 0.59 4
1 5608 2 8.7 5
1 5608 3 4.99 1
1 5608 5 2.88 3
1 5608 9 0.79 1
1 5608 5 7.58 1
MySQL imprime os dados exatamente como fornecidos.
MS SQL
Em MS SQL, a coluna de pontos é do tipo REAL. A saída é a seguinte:
1 5608 1 0.58999997 4
1 5608 2 8.6999998 5
1 5608 3 4.9899998 1
1 5608 5 2.8800001 3
1 5608 9 0.79000002 1
1 5608 5 7.5799999 1
O MS SQL imprime um valor aproximado. Use o tipo de dado DECIMAL (10, precisão) para fixar as casas decimais necessárias na saída. Se você alterar o SQL de criação de esquema que geramos a partir do CSV para que a coluna de pontos seja do tipo DECIMAL(10, 2), a saída muda para isto:
1 5608 1 .59 4
1 5608 2 8.70 5
1 5608 3 4.99 1
1 5608 5 2.88 3
1 5608 9 .79 1
O MS SQL remove os zeros à esquerda.
DB2
Em DB2, a coluna de pontos é do tipo DECFLOAT. A saída é a seguinte:
1 5608 1 0.59 4
1 5608 2 8.7 5
1 5608 3 4.99 1
1 5608 5 2.88 3
1 5608 9 0.79 1
1 5608 5 7.58 1
O DB2 imprime os dados exatamente como fornecidos.