쿼리 질문드려요~도와주세요~~ 0 4 827

by 여리당 [SQL Query] [2014.11.20 16:36:34]


데이터가 이렇게 있는걸

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
 

-> 이렇게 10개씩 묶어서으면 정렬했으면 좋게는데 어떻게 하면 좋을까요?? 

1 6
2 7
3 8
4 9
5 10
11 16
12 17
13 18
14  
15  

고수님들 도와주세요~~

by jkson [2014.11.20 17:23:46]
WITH t AS
     (SELECT     LEVEL lv
            FROM DUAL
      CONNECT BY LEVEL < 19)
SELECT   MAX (val1) val1, MAX (val2) val2
    FROM (SELECT CASE
                    WHEN MOD (lv, 10) IN (1, 2, 3, 4, 5)
                       THEN lv
                    ELSE NULL
                 END val1
               , CASE
                    WHEN MOD (lv, 10) IN (6, 7, 8, 9, 0)
                       THEN lv
                    ELSE NULL
                 END val2
               , TRUNC ((lv - 1) / 10) grp1, decode(MOD (lv, 5),0,5,MOD (lv, 5)) grp2
            FROM t)
GROUP BY grp1, grp2
ORDER BY grp1, grp2

맞는지 모르겠네요. 실제 데이터 앞에 rownum 같은 걸로 순번 매기고 하시면 될 듯합니다.

 

 


by 비주류 [2014.11.20 17:29:53]
WITH T AS (
    SELECT  CHR(64 + LEVEL) val
    FROM    dual
    CONNECT BY LEVEL <= 26
    ORDER BY LEVEL DESC
)
SELECT  val, lead_val
FROM    (
            SELECT  ROW_NUMBER() OVER (ORDER BY val) rn, -- 필요시 정렬 기준 변경
                    val,
                    LEAD(val, 5) OVER (ORDER BY val) lead_val -- 필요시 정렬 기준 변경
            FROM    t
        )
WHERE   MOD(TRUNC((rn - 1) / 5), 2) = 0

 


by 마농 [2014.11.20 17:49:38]
SELECT MIN(lv) c1
     , DECODE(COUNT(*), 2, MAX(lv)) c2
  FROM (SELECT LEVEL lv FROM dual CONNECT BY LEVEL <= 18)
 GROUP BY CEIL(lv / 10), MOD(lv,  5)
 ORDER BY c1
;

 


by 오라클초보 [2014.11.21 12:27:28]

와우 대단한 로직입니다...

제 실력으로는 쿼리 분석도 안되네요..ㅠㅠ

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입