Schwebende Werte in Datenbankingenieurfragen

Last updated: December 12, 2024

Übersicht

Wenn Sie eine Frage zum Database Engineer erstellen, können Sie eine CSV hochladen, um eine Tabelle zu erstellen. Jedes der unterstützten Datenbanksysteme behandelt Fließkommazahlen unterschiedlich. Dieser Artikel bietet Ihnen ein Beispiel, um zu zeigen, wie jedes Datenbanksystem die Fließkommazahlen handhabt. Derzeit unterstützt HackerRank Microsoft SQL, MySQL, Oracle und DB2 Datenbanken.

Beispiel für Fließkommazahlen

Das folgende Beispiel zeigt, wie verschiedene Datenbanksysteme die Daten behandeln. Beim Erstellen einer Database Engineer-Frage ist zu beachten, dass die Abfragen je nach verwendetem Datenbanksystem unterschiedliche Ergebnisse liefern, und die Bewertung erfolgt durch einfachen String-Vergleich.

dbrank.png
Eine Tabelle namens Employee mit den folgenden CSV mit 5 Spalten. Die Punkte-Spalte ist ein Fließkomma.

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
Für die Abfrage "SELECT * from Employee" behandeln die folgenden Datenbanken die Fließkommadaten auf folgende Weise:

Oracle
In Oracle ist die Spalte points vom Typ FLOAT. Die Ausgabe ist wie folgt:
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-Datenbank schneidet die führenden Nullen ab.
MySQL
In MySQL ist die Spalte points vom Typ FLOAT. Die Ausgabe ist wie folgt:
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 gibt die Daten so aus, wie sie bereitgestellt werden.
MS SQL
In MS SQL ist die Spalte points vom Typ REAL. Die Ausgabe ist wie folgt:
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 gibt einen ungefähren Wert aus. Verwenden Sie den Datentyp DECIMAL (10, Stellen nach dem Dezimalpunkt), um die erforderlichen Nachkommastellen im Ergebnis festzulegen. Wenn Sie die von uns generierte SQL-Schema-Definition aus der CSV ändern, sodass die points-Spalte vom Typ DECIMAL(10, 2) ist, ändert sich die Ausgabe zu:
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 entfernt die führenden Nullen.
DB2
In DB2 ist die Spalte points vom Typ DECFLOAT. Die Ausgabe ist wie folgt:
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 gibt die Daten so aus, wie sie bereitgestellt werden.