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 28044 게시물 읽기
No. 28044
테이블에서 중복된 것만 뽑아오는 쿼리..
작성자
kirrie
작성일
2006-09-25 18:48
조회수
2,522

다음과 같은 테이블이 있습니다.


usr_name usr_id usr_jumin usr_hobby usr_job usr_phone
김갑돌 1001 1111112222222 농구 무직 01111111111
김갑돌 1002 1111112222222 농구 무직 01111111111
홍길동 1003 3333334444444 독서 개발직 02222222222
홍길동 1004 3333334444444 독서 개발직 02222222222

...

..

.

.



원래는 중복되어선 안되지만, 여러군데서 회원가입을 받기 때문에 가끔 저렇게 중복된 값이 들어온다고 전제합니다.


이러한 중복가입자들에 대한 리포트를 작성해야 하는데, 쿼리가 잘 안되네요..


리포트에 관한 출력 양식은 다음과 같습니다.


usr_name usr_id usr_jumin usr_hobby usr_job usr_phone
김갑돌 1001 1111112222222 농구 무직 01111111111
홍길동 1003 333333444444 독서 개발직 02222222222

...

..

.


즉, 주민번호를 기준으로 중복된 데이터들을 뽑아오는데, 주민등록번호 이외의 값들 (usr_name, usr_id, usr_hobby, usr_job, usr_phone등등) 은 중복이 안될 수도 있습니다. 그리고 중복된 데이터들은 하나씩만 나와야 합니다.


mysql에선 다음과 같은 쿼리로 간단하게 뽑아 올 수가 있는데요,


select *

from usr_list

group by usr_jumin

having count(*) > 1


이 경우에 중복되지 않는 컬럼들은 내부적인 인덱스로 자동으로 추출해서 보여주는것 같습니다. 어쨌든 주민등록번호 외에 다른 컬럼들은 해당 중복 가입자의 데이터 가운데서 아무꺼나 가져와도 상관없구요.


오라클에서 저런 쿼리를 사용하니 group by에 명시하지 않은 컬럼은 가져올 수가 없더군요. 그렇다고 해서 가져올 컬럼들을 모두 group by절에 넣자니, 중복 가입자에 대한 데이터가 중복한 횟수만큼 가져오게 되고...


설명이 좀 애매하긴 하지만, 아무튼 위와 같은 테이블에서 출력을 위한 양식대로 데이터를 가져오려면 어떻게 쿼리를 만들어야 할까요?


답변에 미리 감사드립니다..

이 글에 대한 댓글이 총 1건 있습니다.
SELECT *  
FROM (SELECT usr_name,usr_id,usr_jumin,usr_hobby,usr_job,usr_phone,
               ROW_NUMBER() OVER(PARTITION BY usr_jumin
                                     ORDER BY usr_jumin) rn
          FROM 테이블 )
WHERE rn = 1
;

테스트는 못 했습니다. 
확인해보세요.

늘 행복하소서~~
GrowingUp님이 2006-09-25 19:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
28047Trigger 실행 시점에 대한.. [1]
궁굼이
2006-09-25
1518
28046마농님..........(고수님들)
펭귄도사
2006-09-25
717
28045프로시져에러 [1]
이분희
2006-09-25
1804
28044테이블에서 중복된 것만 뽑아오는 쿼리.. [1]
kirrie
2006-09-25
2522
28042이것좀 알려주세여...... [4]
펭귄도사
2006-09-25
1586
28041alert로그에 기록된 에러입니다. [1]
박기환
2006-09-25
1318
28038windows 2003 server(32bit) + 9.2.0.1 패치파일을 구합니다. [2]
김경호
2006-09-25
1470
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.016초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다