Valores flotantes en Preguntas de Ingeniero de Bases de Datos

Last updated: December 12, 2024

Resumen

Cuando creas una pregunta de Ingeniero de Bases de Datos, puedes subir un CSV para crear una tabla. Cada uno de los sistemas de bases de datos que son compatibles, maneja los valores de punto flotante de manera diferente. Este artículo te proporciona un ejemplo para mostrar cómo cada sistema de bases de datos maneja los valores de punto flotante. Actualmente, HackerRank soporta bases de datos Microsoft SQL, MySQL, Oracle y DB2.

Ejemplo de Valores de Punto Flotante

El siguiente ejemplo muestra cómo diferentes sistemas de bases de datos manejan los datos. Al crear una pregunta de Ingeniero de Bases de Datos, ten en cuenta que las consultas devuelven resultados diferentes dependiendo del sistema de bases de datos utilizado, y la puntuación se realiza mediante comparación básica de cadenas.

dbrank.png
Una tabla llamada Employee con el siguiente CSV con 5 columnas. La columna points es de tipo 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 la consulta "SELECT * from Employee", los siguientes sistemas de bases de datos tratan los datos de punto flotante de las siguientes maneras:

Oracle
En Oracle, la columna de puntos es de tipo FLOAT. La salida es la siguiente:
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
La base de datos Oracle recorta los ceros a la izquierda.
MySQL
En MySQL, la columna de puntos es de tipo FLOAT. La salida es la siguiente:
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 los datos tal como se proporcionan.
MS SQL
En MS SQL, la columna de puntos es de tipo REAL. La salida es la siguiente:
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
MS SQL imprime un valor aproximado. Usa el tipo de dato DECIMAL (10, precisión) para fijar los lugares después del decimal que se requieren en la salida. Si cambias la SQL de creación de esquema que generamos a partir del CSV para que la columna de puntos sea de tipo DECIMAL(10, 2), la salida cambia a esto:
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 
1 5608 5 7.58 1
MS SQL elimina los ceros a la izquierda.
DB2
En DB2, la columna de puntos es de tipo DECFLOAT. La salida es la siguiente:
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
DB2 imprime los datos tal como se proporcionan.