본문 바로가기
공부/PostgreSQL

[14] PostgreSQL – NUMERIC 데이터 유형

by 혼밥맨 2023. 4. 13.
반응형

[14] PostgreSQL – NUMERIC 데이터 유형

일반적으로 NUMERIC 유형은 정밀도가 필요한 화폐 또는 금액 저장에 사용됩니다.

1
2
3
4
5
Syntax: NUMERIC(precision, scale)
 
Where,
     Precision: Total number of digits.
     Scale: Number of digits in terms of a fraction.
cs

NUMERIC 값은 소수점 이하 16,383자리, 소수점 이하 131,072자리까지 가능합니다. 스케일이 0인 NUMERIC 열에 대해 아래에 정의된 구문과 같이 0 또는 양의 스케일을 가질 수 있습니다.

1
Syntax: NUMERIC(precision)
cs

Precision와 Scale을 모두 제거하면 정밀도 또는 배율에 제한이 없으며 구문은 다음과 같습니다.

1
Syntax: NUMERIC
cs

NUMERIC 및 DECIMAL 유형은 PostgreSQL 및 최대 SQL 표준에서 동일합니다.
NUMERIC 값에 대한 계산이 integer, float 및 double precision보다 느리기 때문에 정밀도가 필요하지 않은 경우 NUMERIC 유형을 사용하지 않는 것이 좋습니다.

 

예시 1:

아래 명령을 사용하여 products라는 새 테이블을 만듭니다.

1
2
3
4
5
CREATE TABLE IF NOT EXISTS products (
    id serial PRIMARY KEY,
    name VARCHAR NOT NULL,
    price NUMERIC (52)
);
cs

이제 가격 열에 선언된 규모를 초과하는 가격의 일부 제품을 삽입합니다.

1
2
3
4
INSERT INTO products (name, price)
VALUES
    ('Phone'100.2157), 
    ('Tablet'300.2149);
cs

가격 열의 스케일이 2이므로 PostgreSQL은 값 100.2157을 100.22로 반올림하고 값 300.2149를 300.21로 반올림합니다.
아래 쿼리는 제품 테이블의 모든 행을 반환합니다.

1
2
3
4
SELECT
    *
FROM
    products;
cs

결과 1:

예시 2:

아래 명령을 사용하여 products라는 새 테이블을 만듭니다.

1
2
3
4
5
CREATE TABLE IF NOT EXISTS employee_salary(
    id serial PRIMARY KEY,
    name VARCHAR NOT NULL,
    salary NUMERIC (102)
);
cs

이제 가격 열에 선언된 규모를 초과하는 가격의 일부 제품을 삽입합니다.

1
2
3
4
5
6
INSERT INTO employee_salary(name, salary)
VALUES
    ('Raju'57896.2277),
    ('Abhishek'84561.3657),
    ('Nikhil'55100.11957), 
    ('Ravi'49300.21425849);
cs

가격 열의 스케일이 2이므로 PostgreSQL은 값 57896.2277을 Raju의 경우 57896.22로, 값 84561.3657을 Abhishek의 경우 84561.36으로, 값 55100.11957을 Nikhil의 경우 55100.12로, 값 49300.21425849를 Ravi0의 경우 49300으로 반올림합니다.

아래 쿼리는 제품 테이블의 모든 행을 반환합니다.

1
2
3
4
SELECT
    *
FROM
    employee_salary;
cs

결과 2:

반응형

댓글