資料庫工程師問題中的浮點值
Last updated: December 12, 2024
概述
當你建立一個資料庫工程師問題時,你可以上傳一個CSV來建立一個表格。每個支援的資料庫系統都以不同的方式處理浮點數值。本文提供一個範例,展示每個資料庫系統如何處理浮點數值。目前,HackerRank 支援 Microsoft SQL、MySQL、Oracle 和 DB2 資料庫。
浮點數值範例
以下範例顯示不同資料庫系統如何處理資料。在建立資料庫工程師問題時,請考慮查詢根據所使用的資料庫系統返回不同的結果,並且評分是通過基本的字串比較來完成的。
一個名為 Employee 的表格,包含以下CSV,有5個欄位。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 中,points 欄位的類型為 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 中,points 欄位的類型為 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 中,points 欄位的類型為 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 輸出近似值。請使用 DECIMAL (10, 小數點後位數) 資料型別來修正輸出中所需的小數位數。如果你修改了我們從 CSV 生成的建立資料表的 SQL,使得 points 欄位為 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 中,points 欄位的類型為 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 按照提供的資料原樣輸出。