データベースエンジニアの質問における浮動小数点値

Last updated: December 12, 2024

概要

データベースエンジニアの質問を作成するときに、CSVをアップロードしてテーブルを作成できます。サポートされている各データベースシステムは、浮動小数点値の扱いが異なります。この記事では、各データベースシステムが浮動小数点値をどのように扱うかの例を示します。現在、HackerRankはMicrosoft SQL、MySQL、Oracle、DB2データベースをサポートしています。

浮動小数点値のサンプル

以下の例は、異なるデータベースシステムがデータをどのように扱うかを示しています。データベースエンジニアの質問を作成するときは、クエリが使用されるデータベースシステムによって異なる結果を返すことを考慮し、スコアは基本的な文字列比較によって行われることに注意してください。

dbrank.png
従業員という名前のテーブルと、5つの列を持つCSVの例。points列は浮動小数点です。

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
クエリ「SELECT * from Employee」に対して、次のデータベースは浮動小数点データを次のように扱います:

Oracle
Oracleでは、ポイント列はFLOAT型です。出力は次のとおりです:
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データベースは先頭のゼロを切り捨てます。
MySQL
MySQLでは、ポイント列はFLOAT型です。出力は次のとおりです:
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は提供されたとおりのデータを出力します。
MS SQL
MS SQLでは、ポイント列はREAL型です。出力は次のとおりです:
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は近似値を出力します。必要な小数点以下の桁数を固定するには、ポイント列のスキーマ作成SQLをDECIMAL (10, 2)型に変更してください。そうすると出力は次のようになります:
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は先頭のゼロを削除します。
DB2
DB2では、ポイント列はDECFLOAT型です。出力は次のとおりです:
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は提供されたとおりのデータを出力します。