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 39172 게시물 읽기
No. 39172
SQL 문의드립니다.
작성자
포대인(sysdbcho)
작성일
2011-12-16 13:08
조회수
4,267

SQL에 대해 문의 드립니다.

aaa 100
bbb  99
ccc  98
ddd  97
eee  96
fff  84
ggg  70
hhh  69
iii  68
jjj  50
kkk  47
lll  30
mmm  28

위와 같이 두번째 컬럼으로 Sort된 집합이 있을 경우

크기순으로 원하는 Group을 만드는 방법이 있을까요?

아래와 같이 지그재그로 Group을 만들고 싶습니다.

---->+
         |
+<---+    
|
+---->

예를들어 :grp 에 3을 넣으면

grp1 grp2 grp3
---- ---- ----
aaa   bbb  ccc
fff   eee  ddd
ggg   hhh  iii

:grp 에 2면

grp1 grp2
---- ----
aaa   bbb
ddd   ccc
eee   fff

8을 넣으면 8개 Group으로요?

떠오를 듯 하지만 쉽지가 않네요.

날씨가 많이 춥습니다. 건강유의하시구요. ^^*

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

WITH t AS
(
SELECT 'aaa' cd, 100 v FROM dual
UNION ALL SELECT 'bbb', 99 FROM dual
UNION ALL SELECT 'ccc', 98 FROM dual
UNION ALL SELECT 'ddd', 97 FROM dual
UNION ALL SELECT 'eee', 96 FROM dual
UNION ALL SELECT 'fff', 84 FROM dual
UNION ALL SELECT 'ggg', 70 FROM dual
UNION ALL SELECT 'hhh', 69 FROM dual
UNION ALL SELECT 'iii', 68 FROM dual
UNION ALL SELECT 'jjj', 50 FROM dual
UNION ALL SELECT 'kkk', 47 FROM dual
UNION ALL SELECT 'lll', 30 FROM dual
UNION ALL SELECT 'mmm', 28 FROM dual
)
SELECT MIN(DECODE(rn2, 1, cd)) grp1
     , MIN(DECODE(rn2, 2, cd)) grp2
     , MIN(DECODE(rn2, 3, cd)) grp3
     , MIN(DECODE(rn2, 4, cd)) grp4
     , MIN(DECODE(rn2, 5, cd)) grp5
  FROM (
        SELECT cd, v
             , rn
             , CEIL(rn / :grp) gb
             , ROW_NUMBER() OVER(
               PARTITION BY CEIL(rn / :grp)
               ORDER BY DECODE(MOD(CEIL(rn / :grp), 2), 0, v, -v)
               ) rn2
          FROM (
                SELECT cd, v
                     , ROW_NUMBER() OVER(ORDER BY v DESC) rn
                  FROM t
                )
        )
 GROUP BY gb
 ORDER BY gb
;

마농(manon94)님이 2011-12-20 09:41에 작성한 댓글입니다.

역시 마농님께서 답을 주셨네요. ^^*

항상 느끼지만 대단하세요.

export / Import 시 테이블 크기순으로 병렬작업으로 돌리려다 보니,

테이블을 비슷한 크기의 그룹으로 나누려고 문의 드렸던 건데요.

유용하게 사용할 것 같습니다.

오늘도 많이 배우고 갑니다.,

포대인(sysdbcho)님이 2011-12-20 14:03에 작성한 댓글입니다.
이 댓글은 2011-12-20 14:04에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
39175toad 설치시(oracle 초보입니다.) [1]
Kim gu
2011-12-19
3821
39174erwin 설치 에러
유닉스
2011-12-19
5089
39173테이블사이즈와 데이터사이즈
궁금이
2011-12-19
17624
39172SQL 문의드립니다. [2]
포대인
2011-12-16
4267
39171partition table merge into 성능문제입니다.
이광복
2011-12-15
4943
39170listener.log 파일에 service_update 찍히는 현상 [1]
박병준
2011-12-14
6607
39169여러 로우를 한 로우에 표현하는 방법좀 부타 드립니다. [1]
김종태
2011-12-14
3806
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다