색으로 구분한것처럼 3 VALUE 값씩 묶어서 3 VALUE값중 MAX, MIN 값 제외 중간값을 불러와야 합니다..
ex) 첫번째 그룹에서는 4562.59 4568.76 3006.31 ===>4562.59 가 select 될수 있도록, 그다움 그룹에서는 4022.53 그다음 그룹에서는 4501.83..
방법이 있을까요~?
by 마농
[2012.08.08 19:18:19]
3개씩 나눌때 정렬 기준이 뭔가요? 두번째 항목인 group 컬럼인가요? 그룹 컬럼의 값이 (숫자 + 알파벳) 인가요? 그럼 정렬이 애매해 지는데...
by 손님
[2012.08.09 09:20:28]
with t as ( select 4562.59 val, '1A' grp, 'ITEM' id from dual union all select 4568.76 val, '2A' grp, 'ITEM' id from dual union all select 3006.31 val, '3A' grp, 'ITEM' id from dual union all select 3587.54 val, '4A' grp, 'ITEM' id from dual union all select 4022.53 val, '5A' grp, 'ITEM' id from dual union all select 4027.48 val, '6A' grp, 'ITEM' id from dual union all select 4121.57 val, '7A' grp, 'ITEM' id from dual union all select 4501.83 val, '8A' grp, 'ITEM' id from dual union all select 4539.13 val, '9A' grp, 'ITEM' id from dual ) select val, grp, id from ( select val, grp, id, gid, row_number()over(partition by gid order by val) gdid from ( select val, grp, id, trunc((row_number()over(order by grp) + 2) / 3, 0) gid from t ) ) where gdid = 2
by Langs
[2012.08.09 13:34:10]
답변감사합니다. 네, 정렬은 group 으로 해야합니다 ㅠㅠ 그리고 쿼리 올려주신분도 감사합니다. select 부분부터 가지고 있는 DB 자료에 맞춰서 했는데 처음엔 total row 수는 똑같은데 data가 이상하게 나왔었거든요. 이리저리 해보다 Group값에 'C'를 0으로 replace 해주고 to_number 를 해주니 제대로 정렬 되네요 감사합니다~
row_number()over 에 대해서 찾아보고 있는데 쉽게 이해가 안가네요.. ㅠ_ㅠ 이해 쉽게 설명좀해주실분 ㅋ
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.