본문 바로가기

프로그램 경험/Database

[SqlServer] 분기별 실적 쿼리 하기(DATEPART 기능 사용)

분기별 실적 쿼리 하기(DATEPART 기능 사용) - SqlServer

분기별로 데이터를 뽑아서 보고서를 만드는 경우가 꽤 있습니다. 

년별 분기별 판매금 합계를 구해 오세요~ 

라고 하면 DATEPART 기능을 사용해서 쿼리하면 됩니다. 

작은 예제를 통해서 해봤습니다.

--임시 테이블을 생성
DECLARE @Temp TABLE 
(
  SaleDate      DATETIME        --판매일
 ,SaleAmout     DECIMAL         --판매금
);

/*
1월  ~  3월 : 1분기
4월  ~  6월 : 2분기
7월  ~  9월 : 3분기
10월 ~ 12월 : 4분기
*/

--데이터 입력
INSERT INTO @Temp VALUES('2013-01-04',     2000000);      --1분기

INSERT INTO @Temp VALUES('2013-04-08',     1200000);      --2분기
INSERT INTO @Temp VALUES('2013-06-17',      400000);    --2분기

INSERT INTO @Temp VALUES('2013-07-08',     3000000);    --3분기
INSERT INTO @Temp VALUES('2013-07-27',     1000000);    --3분기
INSERT INTO @Temp VALUES('2013-08-02',      450000);    --3분기
INSERT INTO @Temp VALUES('2013-08-20',      550000);    --3분기
INSERT INTO @Temp VALUES('2013-09-09',      600000);    --3분기
INSERT INTO @Temp VALUES('2013-09-16',      500000);    --3분기

INSERT INTO @Temp VALUES('2013-10-07',      240000);    --4분기
INSERT INTO @Temp VALUES('2013-11-08',      500000);    --4분기
INSERT INTO @Temp VALUES('2013-12-11',      100000);    --4분기


--데이터 잘 조회 되는지 확인 한번 하고~
SELECT * FROM @Temp;


--분기별로 판매금액 합계 구하기
SELECT 
    --날짜형식을 년도로 변환해줌, 이건 그냥 SUBSTRING 처리 해도 된다.
    DATEPART(YEAR, SaleDate) AS SaleDateYYYY            
    --날짜형식을 분기별 형식으로 변환해줌.
    ,DATEPART(QUARTER, SaleDate) AS SaleDateQuarter        
    --년도와 분기별 판매금액 합계를 구한다.
    ,SUM(SaleAmout) AS SaleAmout            
FROM 
    @Temp
GROUP BY     
    --년도와
    DATEPART(YEAR, SaleDate)            
    --분기별로 합계를 구하기 위해서 그룹 지어준다.
    ,DATEPART(QUARTER, SaleDate)