정렬 순서 문의드립니다. 1 10 1,027

by 김주환 [2014.02.13 12:24:25]



1101130101  10483
1101130103  10485
1101130105  10481
8000000001  10483
8000000002  10485
8000000003  10481

1번 오름차순으로 정렬된 값을

1101130101  10483
8000000001  10483
1101130103  10485
8000000002  10485
1101130105  10481
8000000003  10481

1번을 오름차순으로 정렬하면서 2번이랑 같은 키 값으로 정렬 할 수 있나요?
by DarkBee [2014.02.13 12:33:25]
 ORDER BY lag (col1, 1, col1) over ( partition by col2 order by col1 ), col1

by DarkBee [2014.02.13 12:42:26]
만약 그룹쌍이 3건이상이라면

ORDER BY first_value (s) over ( partition by t order by s ), s

by 김주환 [2014.02.13 13:08:02]
이렇게 하면 답이 안나와요.. 제가 잘못 이해한건가..

by 마농 [2014.02.13 13:07:12]
ORDER BY MIN(c1) OVER(PARTITION BY c2), c1

by 마농 [2014.02.13 13:19:15]
-- 저는 아주 잘 나옵니다. 잘못 적용하신 듯... --
WITH t AS
(
SELECT '1101130101' c1, '10483' c2 FROM dual
UNION ALL SELECT '1101130103', '10485' FROM dual
UNION ALL SELECT '1101130105', '10481' FROM dual
UNION ALL SELECT '8000000001', '10483' FROM dual
UNION ALL SELECT '8000000002', '10485' FROM dual
UNION ALL SELECT '8000000003', '10481' FROM dual
)
SELECT *
  FROM t
 ORDER BY MIN(c1) OVER(PARTITION BY c2), c1
;

by 김주환 [2014.02.13 13:31:02]
이상하게 위와 비슷한 예인데..

마지막에 COL2를 적용하면 COL2로 아예 정렬이 되면서.. 아래처럼.

1101130103    10494
1101130103    10495
1101130103    10496
1101130103    10577
1101130103    10481
1101130103    10581

COL2를 빼면 정상적으로 그룹화해서 되긴 하지만 맨 마지막에  그룹화되서 나오지 않네요.

1101130112    10597
8501160109    10597
1101130112    10518
5102190103    10518
1101130121    10617 ----------------이 부분 아래부터
1101130121    10525
5102190199    10525
8501170115 10617

참 연구해봐야겠네요..ㅠㅠ

by DarkBee [2014.02.13 13:24:02]
그럼 질문을 잘못했겠지요

by 마농 [2014.02.13 13:50:46]

예로 주신 자료에 없는 케이스가 있군요.
c2 별 최소 c1 값이 같은 경우가 있네요.
정렬에 c2 를 추가하세요.
 ORDER BY MIN(c1) OVER(PARTITION BY c2), c2
, c1


by 김주환 [2014.02.13 14:22:07]
네네 됩니다.

정말 감사드립니다. ^^

그런데 궁금한게 있는데.

이 ORDER BY 절에서 추가로 금액으로 정렬을 한다고 하면 금액 컬럼을 추가하면 이 상태에서 금액 순으로 정렬이 나오지 않던데 해결책은 다시 작성해야 하는거죠?

by 마농 [2014.02.13 14:44:38]
알려드린 방법을 이해하지 못한 상태에서 무작정 고치시면 안될 수밖에 없습니다.
기본에 대한 이해가 선행된다면, 나머지는 응용입니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입