데이터베이스 엔지니어 질문에서의 부동 소수점 값
Last updated: December 12, 2024
개요
데이터베이스 엔지니어 질문을 생성할 때, CSV를 업로드하여 테이블을 만들 수 있습니다. 지원되는 각 데이터베이스 시스템은 부동 소수점 값을 다르게 처리합니다. 이 문서는 각 데이터베이스 시스템이 부동 소수점 값을 어떻게 처리하는지 보여주는 예제를 제공합니다. 현재 HackerRank는 Microsoft SQL, MySQL, Oracle, 그리고 DB2 데이터베이스를 지원합니다.
부동 소수점 값 샘플
다음 예제는 서로 다른 데이터베이스 시스템이 데이터를 어떻게 처리하는지 보여줍니다. 데이터베이스 엔지니어 질문을 만들 때, 쿼리가 사용하는 데이터베이스 시스템에 따라 다른 결과를 반환하며, 점수는 기본 문자열 비교로 이루어진다는 점을 고려하세요.
다음과 같은 5개 열이 있는 CSV를 가진 Employee라는 테이블입니다. 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 데이터베이스는 선행 0을 잘라냅니다.
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에서 생성한 스키마를 변경하여 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은 선행 0을 제거합니다.
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는 제공된 대로 데이터를 출력합니다.