SQL에서 DateTime Type으로 생성된 Field를 기준으로 년도, 월,날짜별로 평균을 구하는 방법을 생각해보았다,

이런 저런 연산이 귀찮아서 Format문을 활용하여 구현해 보았는데 Format문의 수정으로 년,월,일,분 기준으로 쉽게 평균을 구할 수 있어서 좋긴한데 속도가 너무 느리다.
예)select Top 10 format(DateTime,’yyyy-MM-dd’),avg(fldV0),avg(fldV1)) from tbldl group by format(DateTime,’yyyy-MM-dd’);

좀 귀찮기는 하지만 DATEPART를 사용해서 속도를 높일수 있다.
select DATEPART(YEAR,DateTime) ,DATEPART(MONTH,DateTime) ,avg(fldV0),avg(fldV1) from mytable group by DATEPART(YEAR,DateTime) , DATEPART(MONTH,DateTime) order by DATEPART(YEAR,DateTime) DESC , DATEPART(MONTH,DateTime) DESC;

또 다른 방법으로 

select CONCAT(DATENAME(yyyy,DateTime), ‘-‘, DATENAME (mm,DateTime)) as m ,avg(fldV0),avg(fldV1) from mytable group by CONCAT(DATENAME(yyyy,DateTime), ‘-‘, DATENAME (mm,DateTime) order by m DESC; 
과 같이  좀더 간략하게 사용 할 수 있다.

38 Comments
댓글 남기기