2008. 12. 8. 22:49
http://radiocom.kunsan.ac.kr/lecture/oracle/function/GROUPING_SETS.html
grouping sets 함수는 GROUP BY 절에서 그룹 조건을 여러 개 지정할 수 있는 함수이다. GROUPING SETS 함수의 결과는 각 그룹 조건에 대해 별도로 GROUP BY한 결과를 UNION ALL한 결과와 동일하다. GROUPING SETS 함수는 하나의 SQL문에 의해 여러 개의 그룹 조건을 한꺼번에 지정하여 복잡한 그룹 처리 과정을 단순하게 구성할 수 있다.
Grouping sets 함수는 Group by의 확장된 형태로 하나의 쿼리문에서 원하는 그룹핑 조건을 여러 개 기술할 수 있으며, grouping sets 함수 사용이 불가능한 이전 버전에서 복잡한 union all 연산자를 사용하여 기술하던 것을 간단하게 한 문장 안에서 해결할 수 있어 검색시 효율성이 증대 된다.
다시 말해서, grouping sets 함수를 사용하면, group by ... union all을 사용한 것보다 SQL 문이 간단해지고 또한 실행시 성능이 빨라진다.
【형식】SELECT 컬럼명,그룹함수(컬럼명), GROUPING(컬럼명)FROM 테이블명WHERE 조건GROUP BY [ROLLUP | CUBE] 그룹핑하고자하는 컬럼명, ... [GROUPING SETS (컬럼명,컬럼명, ...), ...]HAVING 그룹조건ORDER BY 컬럼명 또는 위치번호
composite columns란 rollup, cube, grouping sets 절과 같은 기능을 사용하면
표현되는 각 컬럼이 하나가 아닌 복수 개의 컬럼으로 정의되는 경우이며
다음 표를 보고 이해하자.
composite column 문의 경우 | group by 문의 경우 |
---|---|
group by grouping sets(a,b,c) | group by a union all group by b union all group by c |
group by grouping sets(a,b,(b,c)) | group by a union all group by b union all group by b,c |
group by grouping sets((a,b,c)) | group by a,b,c |
group by grouping sets(a,(b),()) | group by a union all group by b union all group by () |
group by grouping sets(a,rollup(b,c)) | group by a union all group by rollup(b,c) |
group by rollup(a,b,c) | group by (a,b,c) union all group by (a,b) union all group by (a) union all group by () |
group by cube(a,b,c) | group by (a,b,c) union all group by (a,b) union all group by (a,c) union all group by (b,c) union all group by (a) union all group by (b) union all group by (c) union all group by () |
'ORACLE' 카테고리의 다른 글
merge이용 (0) | 2009.06.01 |
---|---|
계층적 질의(hierarchical query) (0) | 2008.12.08 |
파티션 테이블 삭제하기. (0) | 2008.11.13 |
plan_table (0) | 2008.11.06 |
FREE LEC (0) | 2008.10.15 |