[SQL]COMPUTE/COMPUTE BY

2012. 4. 25. 13:11NOTE/IT

COMPUTE/COMPUTE BY


COMPUTE BY라는 다른 녀석 입니다.


  

SELECT type, price FROM titles

WHERE type LIKE '%cook'

ORDER BY type, price

COMPUTE SUM(price)


 



이녀석은 큰 설명이 필요 없습니다. 실행해 보시면? 어떤 녀석인지 감이


팍 잡히실 겁니다.


바로 요약 데이터를 작성하는 녀석 이지요 결과는


type price 

------------ --------------------- 

mod_cook 2.9900

mod_cook 19.9900

trad_cook 11.9500

trad_cook 14.9900

trad_cook 20.9500


sum

===================

70.8700



(6개 행 적용됨)



이런 식이 되실 겁니다 글치요?


다음은? COMPUTE BY 샘플 입니다.


  


SELECT type, price FROM titles

WHERE type LIKE '%cook'

ORDER BY type, price

COMPUTE SUM(price) BY type


 



해당하는 질의와 다른점은?


type price 

------------ --------------------- 

mod_cook 2.9900

mod_cook 19.9900


sum

===================

22.9800



type price 

------------ --------------------- 

trad_cook 11.9500

trad_cook 14.9900

trad_cook 20.9500


sum

===================

47.8900



(7개 행 적용됨)



모가 다른듯 하신가요?


바로 type별로 나뉘어진 요약 결과라는 점이지요.


 


조금더 재미있는 샘플을 알아 본다면?


  

SELECT type, price FROM titles

WHERE type LIKE '%cook'

ORDER BY type, price

COMPUTE SUM(price) BY type

COMPUTE SUM(price)


 



이런 질의를 날려 볼까요?


결과는?


type price 

------------ --------------------- 

mod_cook 2.9900

mod_cook 19.9900


sum

===================

22.9800



type price 

------------ --------------------- 

trad_cook 11.9500

trad_cook 14.9900

trad_cook 20.9500


sum

===================

47.8900



sum

===================

70.8700



(8개 행 적용됨)




이런 식이 되실 겁니다.


하나는 COMPUTE BY 이고.. 또하나는 COMPUTE 인데 맨 마지막에


결과가 하나 추가 되지요? 그럼 제대로 보신 겁니다.


자..  좀더 상세히 이 COMPUTE BY를 알아 보도록 하지요.


COMPUTE / COMPUTE BY


계산 함수를 이용하여 질의 결과로 부터 요약 행을 생성한다.


COMPUTE row_aggregate(column_name)


               [, row_aggregate(column_name)…]


    [BY column_name [,column_name]…]


- COMPUTE BY


- 그룹별로 요약 정보를 생성한다.


- 상세 행과  요약행을 한꺼번에 작성할 수 있다.


- 일반적으로 기본키와 참조키 값에 의해 정렬된 행들에 대해 


   요약 보고서를 작성하는데 사용된다.


 


제약 사항


    - DISTINCT 키워드는 행 계산 함수와 함께 사용할 수 없다.


    - COMPUTE 절에 있는 컬럼은 반드시 select_list에 나타나야 한다.


    - SELECT INTO는 COMPUTE절과 함께 사용할 수 없다.


      - COMPUTE를 포함하고 있는 문장은 Non-relational 결과를 생성하므로


    - COMPUTE BY 절에 컬럼 이름이나 수식을 사용해야 한다.


    - COMPUTE BY 는 반드시 ORDER BY와 함께 사용해야 한다.


      - COMPUTE키워드는 ORDER BY없이 자체적으로 사용될 수 없다.


    - COMPUTE BY 절에 나타나는 컬럼들은 ORDER BY 절에 나타나는 컬럼들과 같거나 


        그 일부분 이어야 한다.


      - 이때 컬럼들의 순서도 일치해야 하며 ORDER BY 절에 나타나는 표현식은 


        반드시 나타나야 한다.


    - 텍스트나 이미지 자료형은 COMPUTE 절에 포함 시킬 수 없다.




ORDER BY와 COMPUTE BY


        ORDER BY a,  b,  c


        - 올바르게 작성된 COMPUTE BY 절


          COMPUTE row_aggregate (column_name) BY a, b, c


          COMPUTE row_aggregate (column_name) BY a, b


          COMPUTE row_aggregate (column_name) BY a


        - 잘못 작성된 COMPUTE BY절


          COMPUTE row_aggregate (column_name) BY b, c


          COMPUTE row_aggregate (column_name) BY a, c


          COMPUTE row_aggregate (column_name) BY c


          COMPUTE row_aggregate (column_name) BY b


'NOTE > IT' 카테고리의 다른 글

[SQL]CURSOR 사용  (0) 2012.04.25
[SQL]TRUNCATE TABLE을 사용한 테이블의 모든 행 삭제  (0) 2012.04.25
[SQL]ROLLUP/CUBE  (0) 2012.04.25
[MSSQL]함수  (0) 2012.04.25
[MSSQL]프로시저 매개변수 사용하기 예제  (0) 2012.04.25