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 41403 게시물 읽기
No. 41403
SELECT문 질문드립니다.
작성자
도토리(dododori)
작성일
2017-05-19 11:12ⓒ
2017-05-19 11:16ⓜ
조회수
8,980

안녕하세요. 어렵지는 않은거 같은데 잘 안되네요.

샘플데이터가

 

그룹명  /  번호  /    이름     /      주소    /     정산일  /

1               1       김개똥           한국            10

1               2       김소똥           한국            15

2               3        김나물           한국            10

2               4         김그물           한국            10

3               5          이미지           한국           15

3               6          이민지            한국          15

4               7          가나다           한국           10

4               8          라마바            한국           15

이런식으로 되어있고 번호가 PK입니다. 그리고 정산일이 10일도 있고 15일도 있고 20일도 있고 30일도 있는데

그룹별로 어떤데이터는 10일만 있기도 하고 어떤데이터는 15일만 있기도 합니다.

하지만 어떤 그룹은 10일도 있고 15일도 있는데 정산일이 통일되어있는 그룹은 필요없고

정산일이 10일과 15일 두가지로 나뉘어 있는 그룹의 리스트가 필요합니다.

위의 샘플데이터에서 예를들면 1번그룹과 4번그룹만 정산일이 10과 15로 나뉘어 있으니

1번그룹과 4번그룹에 속한 사람들 리스트가 나와야 되는거죠.

 

아시는분 답변 부탁드릴게요.

이 글에 대한 댓글이 총 3건 있습니다.

 차례대로 답을 찾아 가면 됩니다.

1. 정산일이 2개이상인 그룹을 찾는다.

여기에 2가지 방법이 존재합니다. 

정산일 수를 카운트 하거나, 정산일의 min, max 값이 다른 경우를 찾거나

보통 min, max를 이용하는 것이 효율이 좋습니다.

 

2. 해당된 리스트를 조회한다.

 

select t.*

from 테이블 t

join ( select 그룹명

         from 테이블 

         group by 그룹명

         having min(정산일) <> max(정산일)

) g ON (t.그룹명 = g.그룹명)

 

이런식으로 작성하면 됩니다.

쿼리는 다양한 방법으로 작성 가능하기 때문에

동일한 집합이 나오도록 다른 쿼리도 생각해 보세요.

박인호(paerae)님이 2017-05-19 13:22에 작성한 댓글입니다.

SELECT *
  FROM (SELECT 그룹명, 번호, 이름, 주소, 정산일
             , COUNT(DISTINCT 정산일) OVER(PARTITION BY 그룹명) cnt
          FROM t
        )
 WHERE cnt > 1
;

마농(manon94)님이 2017-05-19 15:35에 작성한 댓글입니다.

 답변감사합니다 덕분에 잘 해결되었습니다 ^^

도토리(dododori)님이 2017-05-19 17:38에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41408오라클12c 서버 설치와 오라클12c 클라이언트 설치의 차이점
오라클
2017-05-22
6620
41407오라클 쿼리 작성시 질문이요.... [2]
백현선
2017-05-22
5951
41406오라클 Date 시간 출력 고민. [2]
지구본
2017-05-22
6997
41403SELECT문 질문드립니다. [3]
도토리
2017-05-19
8980
41400RMAN 복구 질문
검콤이
2017-05-16
5963
41399(추가)in으로 ''조회하여 빈 행 출력 [5]
빡빡완
2017-05-15
6848
41393쿼리 작성 문의 [1]
김씨
2017-05-12
6073
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.051초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다