SQL Server/실기 정리
SQL Server 53강 - 52주 주가 범위 및 변동률 계산
코딩하는냥이
2025. 6. 9. 10:14
반응형
이번 글은 주식 데이터를 활용하여 52주간의 최저/최고 주가,
그리고 주가 차이 및 변동률을 계산하는 방법을 배워보겠습니다.
📌 예제 코드
SELECT
symbol,
CONVERT(decimal(18, 2), MIN([close])) AS w52_min, -- 52주 최저가
CONVERT(decimal(18, 2), MAX([close])) AS w52_max, -- 52주 최고가
CONVERT(decimal(18, 2), MAX([close]) - MIN([close])) AS w52_diff_price, -- 주가 차이
CONVERT(decimal(18, 2), (MAX([close]) - MIN([close])) / MIN([close]) * 100) AS w52_diff_ratio -- 변동률(%)
FROM stock
WHERE date >= DATEADD(WEEK, -52, '2021-10-04') -- 기준일로부터 52주 전
AND date <= '2021-10-04' -- 기준일
GROUP BY symbol;
💻 실행 결과 예시
symbol | w52_min | w52_max | w52_diff_price | w52_diff_ratio |
MSFT | 210.45 | 305.67 | 95.22 | 45.25 |
AAPL | 125.78 | 160.94 | 35.16 | 27.95 |
(예시입니다. 실제 값은 데이터에 따라 다름)
💬 코드 설명
- DATEADD(WEEK, -52, '2021-10-04') : 기준일로부터 52주 전 날짜를 계산합니다.
- MIN([close]), MAX([close]) : 해당 기간 동안의 최저가와 최고가를 구합니다.
- MAX - MIN : 단순한 가격 차이 (변동 폭)
- (MAX - MIN) / MIN * 100 : 최저가 대비 변동률(%)을 계산
- CONVERT(decimal(18, 2), ...) : 소수점 둘째 자리까지 반올림하여 보기 좋게 만듭니다.
💡 포인트 정리
- 날짜 함수 DATEADD()는 과거 기간 계산에 유용합니다.
- 집계 함수 MIN(), MAX()는 주가 분석의 기초입니다.
- GROUP BY symbol을 통해 종목별 집계를 할 수 있습니다.
- 주가 변동률 계산 시 반드시 소수점 자릿수 처리를 해주면 보고서 작성에 적합합니다.
📌 정리하자면, 이 쿼리는 주식 종목별로 최근 1년(52주)간의 주가 흐름을 간단히 분석할 수 있는 강력한 방법입니다.
변동 폭이 큰 종목을 찾거나, 하락장 대비 분석 등 다양한 응용이 가능합니다.