단일값 제거하고 중복값만 찾는 쿼리 질문드립니다. 0 3 1,073

by OMIL [Oracle 기초] [2017.08.04 11:55:40]


date no
2017-08-04 1
2017-08-04 1
2017-08-04 1
2017-08-04 2
2017-08-04 3
2017-08-04 3
2017-08-04 4
2017-08-04 5
2017-08-04 5

위와 같은 결과 값이 나왔을때

아래와 같이 no컬럼에 단일 값 가진 행은 제거하고 중복값을 가진 행만 남기려면

어떻게 해야할지 조언구합니다.

감사합니다.

date no
2017-08-04 1
2017-08-04 1
2017-08-04 1
2017-08-04 3
2017-08-04 3
2017-08-04 5
2017-08-04 5
   
   
by jkson [2017.08.04 12:23:58]
WITH  T
AS (
SELECT TO_DATE('2017-08-04','yyyy-mm-dd') AS DT,'1' AS NO FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'1' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'1' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'2' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'3' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'3' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'4' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'5' FROM DUAL UNION ALL
SELECT TO_DATE('2017-08-04','yyyy-mm-dd'),'5' FROM DUAL 
)
SELECT DT, NO
FROM
(
SELECT DT, NO, COUNT(1) OVER(PARTITION BY DT, NO) CNT
FROM T
)
WHERE CNT > 1

 


by OMIL [2017.08.04 13:32:31]

중복값이 수백건 이라 일일이 중복값을 입력해서 조회하진 못할것 같은데 다른 방법은 없을지요?


by jkson [2017.08.04 13:42:51]

with 문은 테스트 데이터를 보여드리려고 임시 데이터를 만든 것이고

with 문 아래 쿼리만 보시면 됩니다.

임시 테이블인 t 부분을 사용하시는 테이블 명으로 바꾸시면 됩니다.

 

SELECT DT, NO
FROM
(
SELECT DT, NO, COUNT(1) OVER(PARTITION BY DT, NO) CNT
FROM 테이블명
)
WHERE CNT > 1

 

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