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주)간의 주가 흐름을 간단히 분석할 수 있는 강력한 방법입니다.
변동 폭이 큰 종목을 찾거나, 하락장 대비 분석 등 다양한 응용이 가능합니다.