🧚 잠깐만요! Beekeeper Studio는 빠르고 현대적인 오픈 소스 데이터베이스 GUI예요 다운로드
2024년 8월 23일 작성자: Matthew Rathbone

숫자 값 빼기

SQL에서 숫자 값을 빼는 건 간단해요. 다른 프로그래밍 언어와 마찬가지로 - 연산자를 사용해 뺄셈을 해요.

테이블의 컬럼끼리 빼기

실제 매출과 예상 매출 수치를 저장하는 sales라는 테이블이 있다고 가정해 볼게요:

CREATE TABLE sales (
    id INT PRIMARY KEY,
    actual_sales DECIMAL(10, 2),
    projected_sales DECIMAL(10, 2)
);

INSERT INTO sales (id, actual_sales, projected_sales)
VALUES
(1, 1000.00, 1200.00),
(2, 1500.00, 1500.00),
(3, 1300.00, 1250.00);

실제 매출과 예상 매출의 차이를 계산하려면 다음과 같은 쿼리를 작성하면 돼요:

SELECT 
    id,
    actual_sales,
    projected_sales,
    actual_sales - projected_sales AS difference
FROM 
    sales;

예상 결과:

+----+--------------+-----------------+------------+
| id | actual_sales | projected_sales | difference |
+----+--------------+-----------------+------------+
|  1 |      1000.00 |         1200.00 |    -200.00 |
|  2 |      1500.00 |         1500.00 |       0.00 |
|  3 |      1300.00 |         1250.00 |      50.00 |
+----+--------------+-----------------+------------+
3 rows in set (0.00 sec)

SQL에서 날짜 빼기

SQL에서는 날짜끼리 빼서 일, 월, 연 단위의 차이를 구할 수도 있어요. 방법은 사용하는 데이터베이스 시스템에 따라 달라요.

MySQL에서 날짜 빼기

start_date와 end_date 컬럼이 있는 employees 테이블을 생각해 볼게요:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    start_date DATE,
    end_date DATE
);

INSERT INTO employees (id, start_date, end_date)
VALUES
(1, '2023-01-01', '2023-08-01'),
(2, '2022-05-15', '2023-05-15'),
(3, '2023-03-01', '2023-03-31');

end_date와 start_date 사이의 일수 차이를 계산하려면 DATEDIFF 함수를 사용하면 돼요:

SELECT 
    id,
    start_date,
    end_date,
    DATEDIFF(end_date, start_date) AS days_difference
FROM 
    employees;

예상 결과:

+----+------------+------------+-----------------+
| id | start_date | end_date   | days_difference |
+----+------------+------------+-----------------+
|  1 | 2023-01-01 | 2023-08-01 |             212 |
|  2 | 2022-05-15 | 2023-05-15 |             365 |
|  3 | 2023-03-01 | 2023-03-31 |              30 |
+----+------------+------------+-----------------+
3 rows in set (0.01 sec)

타임스탬프 빼기

타임스탬프 빼기는 초, 분, 시간 등의 단위로 시간 차이를 계산해야 할 때 유용해요.

PostgreSQL에서 타임스탬프 빼기

이벤트의 시작 및 종료 타임스탬프를 저장하는 logs 테이블이 있다고 가정해 볼게요:

CREATE TABLE logs (
    id SERIAL PRIMARY KEY,
    start_time TIMESTAMP,
    end_time TIMESTAMP
);

INSERT INTO logs (start_time, end_time)
VALUES
('2023-08-01 10:00:00', '2023-08-01 12:00:00'),
('2023-08-02 09:15:00', '2023-08-02 10:45:00');

end_time과 start_time 사이의 시간 차이를 계산하려면 EXTRACT 함수를 사용하면 돼요:

SELECT 
    id,
    start_time,
    end_time,
    EXTRACT(EPOCH FROM end_time - start_time) / 3600 AS hours_difference
FROM 
    logs;

예상 결과:

id |     start_time      |      end_time       |  hours_difference
----+---------------------+---------------------+--------------------
  1 | 2023-08-01 10:00:00 | 2023-08-01 12:00:00 | 2.00
  2 | 2023-08-02 09:15:00 | 2023-08-02 10:45:00 | 1.50
(2 rows)

Time: 9.567 ms

행 간 빼기

경우에 따라 서로 다른 행의 값을 빼야 할 때도 있어요. 보통 윈도우 함수를 사용해서 처리해요.

monthly_sales 테이블을 사용해 월별 매출 차이를 계산해 볼게요:

CREATE TABLE monthly_sales (
    month DATE PRIMARY KEY,
    total_sales DECIMAL(10, 2)
);

INSERT INTO monthly_sales (month, total_sales)
VALUES
('2023-01-01', 2000.00),
('2023-02-01', 2200.00),
('2023-03-01', 2100.00);

전월 대비 매출 차이를 계산하려면 LAG 함수를 사용하면 돼요:

SELECT 
    month,
    total_sales,
    total_sales - LAG(total_sales) OVER (ORDER BY month) AS sales_difference
FROM 
    monthly_sales;

예상 결과:

   month    | total_sales | sales_difference
------------+-------------+------------------
 2023-01-01 |     2000.00 |           [NULL]
 2023-02-01 |     2200.00 |           200.00
 2023-03-01 |     2100.00 |          -100.00
(3 rows)

Time: 5.648 ms

결론

SQL의 뺄셈은 숫자, 날짜, 타임스탬프는 물론 행 간에도 적용할 수 있는 다재다능한 연산이에요. SQL 데이터베이스마다 문법에 차이는 있지만 기본 연산은 같아요. 핵심은 이런 미묘한 차이에 익숙해지는 거예요.

함께 읽으면 좋은 글:

Beekeeper Studio는 무료 오픈 소스 데이터베이스 GUI예요

지금까지 써 본 SQL 쿼리 & 에디터 도구 중 최고예요. 데이터베이스 관리에 필요한 모든 게 다 있어요. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio는 빠르고 직관적이며 사용하기 쉬워요. 다양한 데이터베이스를 지원하고 Windows, Mac, Linux에서 모두 잘 작동해요.

Beekeeper의 Linux 버전은 100% 모든 기능을 갖추고 있어요. 대충 만든 부분도, 빠진 기능도 없어요.

Beekeeper Studio 사용자 후기

★★★★★
"Beekeeper Studio가 예전 SQL 작업 방식을 완전히 대체했어요. 빠르고 직관적이라 데이터베이스 작업이 다시 즐거워졌어요."
— Alex K., 데이터베이스 개발자
★★★★★
"여러 데이터베이스 GUI를 써 봤지만, Beekeeper는 기능과 단순함 사이의 균형이 완벽해요. 그냥 잘 작동해요."
— Sarah M., 풀스택 엔지니어

SQL 작업 방식을 개선할 준비가 되셨나요?

download 무료 다운로드