PostgreSQL은 다양한 숫자 데이터 타입에 대해 뺄셈(-)을 포함한 기본 산술 연산자를 지원해요.
계속 읽으시기 전에, 저희가 만든 모던하고 빠른 PostgreSQL 데이터베이스 관리 도구인 Beekeeper Studio를 소개해 드리고 싶어요. 자동 완성 SQL 편집기로 이런 계산을 빠르게 시도해 볼 수 있고, PostgreSQL용은 무료로 사용할 수 있어요. 여기서 다운로드하세요.
첫 번째 예제는 간단해요. 두 정수를 빼는 거예요. 이 방법은 PostgreSQL뿐 아니라 모든 SQL 기반 데이터베이스에서 동작해요.
SELECT 15 - 5 AS result;
예상 결과:
| result |
|---|
| 10 |
컬럼 빼기
이제 한 컬럼에서 다른 컬럼을 빼는 방법을 살펴볼게요. 다음과 같은 구조의 판매 테이블 sales가 있다고 해 볼게요:
| id | item | price | discount |
|---|---|---|---|
| 1 | A | 100 | 20 |
| 2 | B | 200 | 50 |
할인이 적용된 최종 가격을 구하고 싶다면, 가격에서 할인액을 빼면 돼요.
SELECT id, item, price - discount AS Final_Price FROM sales;
예상 결과:
| id | item | final_price |
|---|---|---|
| 1 | A | 80 |
| 2 | B | 150 |
날짜 빼기
PostgreSQL에서 날짜끼리 빼면 두 날짜 사이의 차이를 일 단위로 반환해요.
다음과 같은 rentals 테이블이 있다고 해 볼게요:
| id | item | rent_start_date | rent_end_date |
|---|---|---|---|
| 1 | Bike | 2022-03-01 | 2022-03-10 |
| 2 | Car | 2022-02-20 | 2022-03-02 |
대여 기간을 계산해 볼게요:
SELECT id, item, rent_end_date - rent_start_date as rental_duration FROM rentals;
예상 결과:
| id | item | rental_duration |
|---|---|---|
| 1 | Bike | 9 |
| 2 | Car | 10 |
타임스탬프 빼기
PostgreSQL에서 타임스탬프끼리 빼면 두 타임스탬프 사이의 interval을 얻을 수 있어요.
logins 테이블이 있다고 가정해 볼게요:
| id | login_time | logout_time |
|---|---|---|
| 1 | 2022-03-15 08:00:00 | 2022-03-15 10:30:00 |
| 2 | 2022-03-15 07:30:00 | 2022-03-15 10:00:00 |
각 세션의 지속 시간을 계산해 볼게요:
SELECT id, logout_time - login_time as session_duration FROM logins;
예상 결과:
| id | session_duration |
|---|---|
| 1 | 02:30:00 |
| 2 | 02:30:00 |
실전 활용 사례
재고 관리
전체 재고에서 판매된 수량을 빼서 각 제품의 가용 재고를 계산하는 예제예요.
다음과 같은 구조의 inventory 테이블이 있다고 가정해 볼게요:
CREATE TABLE inventory (
product_id SERIAL PRIMARY KEY,
product_name VARCHAR(255),
total_stock INT,
sold INT
);
샘플 데이터:
INSERT INTO inventory (product_name, total_stock, sold) VALUES
('Product A', 100, 50),
('Product B', 200, 180),
('Product C', 150, 140);
쿼리: 가용 재고 계산
SELECT product_id, product_name, total_stock - sold AS available_stock
FROM inventory;
예상 결과:
product_id | product_name | available_stock
------------+--------------+-----------------
1 | Product A | 50
2 | Product B | 20
3 | Product C | 10
이 쿼리에서는 total_stock에서 sold 수량을 빼서 각 제품의 available_stock을 구해요.
나이 계산
PostgreSQL의 age 함수는 두 날짜 사이의 차이를 계산해서, 연·월·일을 포함하는 복합 interval 타입으로 결과를 반환해요.
테이블에 있는 고객의 나이를 계산하고 싶을 때 쓸 수 있는 실전 예제예요.
birthdate 컬럼이 있는 customers 테이블이 있다고 해 볼게요.
SELECT customer_id, birthdate, age(current_date, birthdate) AS age
FROM customers;
예상 결과:
customer_id | birthdate | age
-------------+------------+----------------------
1 | 1990-04-25 | 34 years 3 mons 12 days
2 | 1985-10-12 | 38 years 9 mons 24 days
3 | 2000-01-01 | 24 years 7 mons 5 days
마무리
PostgreSQL의 뺄셈은 숫자, 날짜, interval에 두루 쓸 수 있는 다재다능한 도구예요. 이 글에서는 숫자와 날짜를 모두 다루며 PostgreSQL의 뺄셈 연산을 살펴봤어요. 계산할 때는 항상 데이터 타입을 확인하고 호환되는지 꼭 점검하세요. 고급 SQL 개념을 더 깊이 다룰 다음 시리즈도 기대해 주세요. 즐거운 코딩 되세요!
함께 읽으면 좋은 글:
Beekeeper Studio는 무료 오픈 소스 PostgreSQL GUI예요
제가 찾던 바로 그 PostgreSQL 클라이언트예요! UI가 차별점이에요. 깔끔하고 직관적이면서 강력해요. 투박한 PGAdmin이여, 안녕. - David Cyprian
Beekeeper Studio는 빠르고 직관적이며 사용하기 쉬운 PostgreSQL 클라이언트예요. 다른 데이터베이스도 많이 지원하고, Windows, Mac, Linux에서 잘 작동해요.
PostgreSQL 사용자들의 Beekeeper Studio 후기
pgAdmin과 달리 Beekeeper는 놀라울 만큼 사용하기 쉬우면서도 기능이 부족하지 않아요. 가격도 적당하고요! 특히 데이터베이스 백업 기능이 유용해요. 정말 훌륭한 소프트웨어예요.
정말 멋진 도구예요. 지금까지 써 본 Postgres와 MySql DB 관리용 IDE 중 가장 실용적이에요. 번거로움 없이 그냥 잘 작동해요 :-)