database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 37886 게시물 읽기
No. 37886
Grouping, Group_id 질문입니다..
작성자
아폴론(apollon)
작성일
2010-08-23 13:41
조회수
4,200

with tt as
(
SELECT  '0001' accd, '21' hmcd, '01' mnth, 1000000 amt FROM dual
UNION ALL SELECT  '0003', '21', '02', 2000000 FROM dual
UNION ALL SELECT  '0001', '21', '01',  800000 FROM dual
UNION ALL SELECT  '0005', '13', '03',  600000 FROM dual
UNION ALL SELECT  '0006', '01', '05',  600000 FROM dual
)
select accd,hmcd,
  grouping(accd) GRP1,                -->OK
  grouping(hmcd) GRP2,                -->OK
  grouping(accd)+grouping(hmcd) GRP3, -->OK
  GROUPING_ID(accd,hmcd) GID1,        -->왜 맨 아래가 3이 되죠?
  GROUPING_ID() GID2                  -->인수의 갯수가 부적합..
                                      --> GRP3를 대체 할수 있는것은? 
  GROUP_ID() GID3,                    -->GROUP_ID 가 뭐죠?..   
  max(mnth) mnth,sum(amt) from tt

group by rollup(accd,hmcd)
 

이 글에 대한 댓글이 총 1건 있습니다.

해당 함수들은 rollup 이나 cube 사용시
발생된 결과를 구분하기 위한 함수입니다.


1. GROUPING(a)
- a 컬럼으로 구룹이 지어진결과는 0, 합산된 결과는 1


2. GROUPING_ID(a, b)
- GROUPING(a) || GROUPING(b) 를 2진수로 보고 10진수로 환산
- 예) 00 => 0, 01 => 1, 11 => 3


3. GROUP_ID()
- GROUP BY ROLLUP(a, a) 의 결과행은 위 두개 함수로는 구분이 안됩니다.
- 동일 항목으로 롤업했을때 결과를 구별하기 위해 사용됩니다.

마농(manon94)님이 2010-08-24 08:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
37889Index Tablespace 공간 확보 방안 좀 해결해 주세요 [4]
simon
2010-08-23
2768
37888ORA-01467: 정렬 키가 너무 깁니다(해결해 보신분 있으신가요?) [1]
이상영
2010-08-23
5131
37887(힘든노가다홍보일주실분)010-5787-6000
김선종
2010-08-23
3036
37886Grouping, Group_id 질문입니다.. [1]
아폴론
2010-08-23
4200
37885특정날짜에서 시간대별 통계 쿼리문. [3]
박하나무
2010-08-23
9312
37884오늘 마지막 시간가져오기
박주현
2010-08-23
3084
37883맨 아랫 Row에 비율 나타내기.. [5]
아폴론
2010-08-20
3892
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.027초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다