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 34725 게시물 읽기
No. 34725
같은 데이터값별로 번호부여에 관해 질문드릴께요
작성자
헬프미
작성일
2008-11-11 10:07
조회수
2,022

쿼리가 


SELECT DEPT, 

             SUM, 

             GRADE 

   FROM AAAAA   ... 이고



데이터가...


   DEPT      SUM    GRADE

   -----------------------

   XXXX      1000      A

   YYYY      2000      A

   ZZZZ      3000      A

   QQQQ     2000      B

   LLLL       2000      B

   UUUU      3000      C

   OOOO     4000      C

   RRRR      2000      C

   


이런 식으로 있다고 할때.. 



앞에 번호를 붙이고 싶거든요... 


    DEPT      SUM    GRADE

   -----------------------

1   XXXX      1000      A

2   YYYY      2000      A

3   ZZZZ      3000      A

1   QQQQ     2000      B

2   LLLL       2000      B

1   UUUU      3000      C

2   OOOO     4000      C

3   RRRR      2000      C



이런식으로 같은 데이터끼리 번호를 붙이고 싶습니다... 



그런데 이렇게 하려니 기존쿼리에 ROWNUM 컬럼을 추가하고나서


WHERE GRADE = 'A' 주고 UNION ALL


담에 WHERE GRADE = 'B' 주고 UNION ALL... 


이런식으로 붙이면 되긴 됩니다만...


SELECT ROWNUM,

             DEPT, 

             SUM, 

             GRADE 

   FROM AAAAA   

 WHERE GRADE = 'A'


UNION ALL


SELECT ROWNUM,

             DEPT, 

             SUM, 

             GRADE 

   FROM AAAAA   

 WHERE GRADE = 'B'


..................  




이런 방법 말구 더 좋은 방법을 알고 싶어서요... 


아무래도 같은 쿼리가 중복되다보니 보기도 싫고...


어떤 방법이 있을까요



  

이 글에 대한 댓글이 총 3건 있습니다.
SELECT ROW_NUMBER() OVER(PARTITION BY grade ORDER BY 1) seq
     , dept
     , sum
     , grade
  FROM aaaaa
;
마농(manon94)님이 2008-11-11 10:51에 작성한 댓글입니다.

마농님 감사합니다.(__) 


그런데 추가로.. 


ORDER BY 를 아무리 조정해도 내림차순으로는 정렬이 안되는데.... 

원래 그런건가요?... 


등급이 높은데서 낮은순으로 정렬을 해야 하는데... D C B A 순으로요... 

------------------------------------------------------------------

확인을 해보니.. 


등급으로 파티션을 나눴을경우는 등급으로 오더바이가 안되는거네요.. ;;


즉, ROW_NUMBER() OVER(PARTITION BY GRADE ORDER BY GRADE DESC) 는


안먹는군여...

헬프미님이 2008-11-11 13:01에 작성한 댓글입니다.
이 댓글은 2008-11-11 13:19에 마지막으로 수정되었습니다. Edit

정렬을 하시려면 
최종으로 order by 절을 한번 더 기술해 주시면 되구요.
굳이 order by절을 추가하지 않고 분석함수만으로 정렬을 원하신다면 약간의 꼼수를 쓰시면 됩니다.
PARTITION BY -ASCII(grade)

마농(manon94)님이 2008-11-13 10:47에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
34729Oracle 8i에서 데이터 삭제시... [2]
end
2008-11-11
1726
34728table 에 create date 같은 컬럼이 없습니다.. [2]
엉뚱한놈
2008-11-11
2073
34727group 비슷한 쿼리 입니다. 도와주세요. [2]
행동하자
2008-11-11
1982
34725같은 데이터값별로 번호부여에 관해 질문드릴께요 [3]
헬프미
2008-11-11
2022
34723tablespace 재확보 ... [1]
gonzi
2008-11-10
2167
34722이해가 안됩니다.ORA-00907: 우괄호가 없습니다 [1]
wenzie
2008-11-10
2436
34721날짜별 정지시간 추출하는 쿼리 질문요~~ [1]
시릴로
2008-11-10
2121
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다