2012. 4. 25. 13:11ㆍNOTE/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 |