이번 글에서는 SQL에서 변수를 선언하고 할당하는 데 사용되는 SET과 DECLARE 구문에 대해 알아보겠습니다. SQL에서 변수를 사용하는 것은 데이터 관리 및 분석 작업을 효율적으로 수행하는 데 중요합니다. 올바른 구문 사용법을 이해하고, 실제 예제를 통해 학습하며, 변수 사용 시 고려해야 할 사항을 살펴보겠습니다.
■ 예제: 월별 매출 분석
데이터 분석가인 여러분은 매월 회사의 매출 성과를 분석하여 경영진에게 보고해야 합니다. 매출 데이터는 Sales
테이블에 저장되어 있으며, 각 판매 거래에 대한 날짜(SaleDate
), 판매액(SalesAmount
), 그리고 고객 ID(CustomerID
)를 포함하고 있습니다. 경영진은 특히 지난 달 전체의 매출 총액과 거래 건수를 알고 싶어 합니다.
DECLARE
와 SET
구문을 사용하여 지난 달의 시작과 끝 날짜를 동적으로 계산하고, 이를 기반으로 해당 기간 동안의 매출 총액과 거래 건수를 질의하는 방법을 SQL로 짜보겠습니다 (SQL 쿼리 정답은 아래에 있습니다).
■ SET과 DECLARE 구문 개요
SQL에서 변수는 데이터를 임시로 저장하는 저장소 역할을 합니다. DECLARE 구문은 변수를 선언하는 데 사용되며, SET 구문은 선언된 변수에 값을 할당하는 데 사용됩니다.
- DECLARE: 변수를 선언하고 데이터 타입을 지정합니다. 선언된 변수는 스크립트 내에서 값이 할당되고 사용될 수 있습니다.
- SET: 선언된 변수에 특정 값을 할당합니다. 값은 고정된 값일 수도 있고, 계산된 결과나 쿼리의 결과일 수도 있습니다.
■ 변수 선언하기 (DECLARE 구문 사용법)
변수를 선언할 때는 변수명 앞에 @ 기호를 붙이고, 데이터 타입을 지정해야 합니다. 예를 들어, 날짜 타입의 변수를 선언하는 방법은 다음과 같습니다.
DECLARE @StartDate DATE;
이 코드는 @StartDate라는 이름의 날짜 타입 변수를 선언합니다.
■ 변수에 값 할당하기 (SET 구문 사용법/동적 값 할당하기)
선언된 변수에 값을 할당할 때는 SET 구문을 사용합니다. 값은 직접 지정하거나, 다른 변수, 함수의 결과 등으로부터 동적으로 할당될 수 있습니다.
SET @StartDate = '2024-01-01';
또는 동적으로 날짜를 계산하여 할당하는 예시는 다음과 같습니다.
SET @StartDate = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0);
■ 예제로 배우기
맨처음 예제를 살펴봅시다. 우리는 지난 달의 첫째 날과 마지막 날을 동적으로 계산하고 싶고, 이를 변수화하여 매달 같은 쿼리를 실행하고 싶습니다.
예제 쿼리는 다음 단계를 따릅니다:
- 변수 선언:
@FirstDayOfLastMonth
과@LastDayOfLastMonth
변수를DATE
타입으로 선언합니다. - 변수에 값 할당:
DATEADD
와DATEDIFF
함수를 사용하여 지난 달의 첫째 날과 마지막 날을 계산하고, 이를 변수에 할당합니다. - 매출 데이터 조회:
WHERE
절에서 변수를 사용하여 지난 달 동안의 매출 총액과 거래 건수를 계산합니다.
-- 지난 달의 첫째 날과 마지막 날을 계산하기 위한 변수 선언 DECLARE @FirstDayOfLastMonth DATE, @LastDayOfLastMonth DATE; -- 지난 달의 첫째 날 계산 SET @FirstDayOfLastMonth = DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()) - 1, 0); -- 지난 달의 마지막 날 계산 SET @LastDayOfLastMonth = DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)); -- 지난 달의 매출 총액과 거래 건수 조회 SELECT SUM(SalesAmount) AS TotalSales, COUNT(*) AS NumberOfTransactions FROM Sales WHERE SaleDate >= @FirstDayOfLastMonth AND SaleDate <= @LastDayOfLastMonth;
이 예제는 SQL 변수를 사용하여 동적 날짜 범위를 계산하고, 이를 기반으로 데이터를 조회하는 방법을 보여줍니다. 비즈니스에서 이러한 방식을 활용하면 매월 반복적인 데이터 분석 작업을 자동화하고, 보다 정확하고 효율적으로 정보를 제공할 수 있습니다.
■ 변수 사용 시 주의사항
- 스코프 이해하기: 변수는 선언된 배치나 프로시저 내에서만 유효합니다. 다른 배치나 프로시저에서는 접근할 수 없습니다.
- 성능 최적화 팁: 변수를 사용하여 쿼리를 반복 실행하는 경우, 쿼리의 재사용 가능성을 높여 성능을 최적화할 수 있습니다.
- 변수 사용의 장단점: 변수는 코드의 가독성을 높이고, 동적 쿼리 작성을 용이하게 합니다. 하지만, 과도한 변수 사용은 메모리 사용량 증가로 이어질 수 있으므로 주의해야 합니다.