Vliegende waarden in Database Engineer-vragen

Last updated: December 12, 2024

Overzicht

Wanneer je een Database Engineer-vraag maakt, kun je een CSV uploaden om een tabel te maken. Elk van de ondersteunde databasesystemen behandelt drijvende-kommagetallen op een andere manier. Dit artikel geeft je een voorbeeld om te laten zien hoe elk databasesysteem de drijvende-kommagetallen behandelt. Momenteel ondersteunt HackerRank Microsoft SQL, MySQL, Oracle en DB2 databases.

Voorbeeld van drijvende-kommagetallen

Het volgende voorbeeld laat zien hoe verschillende databasesystemen omgaan met de gegevens. Bij het maken van een Database Engineer-vraag moet je rekening houden met het feit dat de query's verschillende resultaten opleveren, afhankelijk van het gebruikte databasesysteem, en dat de scoring wordt gedaan door eenvoudige stringvergelijking.

dbrank.png
Een tabel genaamd Employee met de volgende CSV met 5 kolommen. De puntenkolom is een 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
Voor de query "SELECT * from Employee", behandelen de volgende databases de float-gegevens op de volgende manieren:

Oracle
In Oracle is de kolom punten van het type FLOAT. De uitvoer is als volgt:
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
Oracle database knipt de voorloopnullen af.
MySQL
In MySQL is de kolom punten van het type FLOAT. De uitvoer is als volgt:
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 print de gegevens zoals ze zijn aangeleverd.
MS SQL
In MS SQL is de kolom punten van het type REAL. De uitvoer is als volgt:
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 geeft een benaderde waarde weer. Gebruik het dataype DECIMAL (10, precisie) om de decimalen vast te leggen die nodig zijn in de output. Als je de schema-aanmaak SQL die we uit de CSV hebben gegenereerd aanpast zodat de punten kolom van het type DECIMAL(10, 2) is, verandert de output in dit:
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 
MS SQL verwijdert de voorloopnullen.
DB2
In DB2 is de kolom punten van het type DECFLOAT. De uitvoer is als volgt:
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 print de gegevens zoals ze zijn aangeleverd.