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 40453 게시물 읽기
No. 40453
외부테이블에 의한 그룹핑에 대해 문의드립니다.
작성자
초보
작성일
2014-05-14 03:55
조회수
6,670

WITH t AS (

select '1,2,3' a from dual union ALL

select '1,2' from dual union all

select '1,3' from dual union ALL

select '2,3' from dual union all

select '1' from dual union all

select '2' from dual union all

select '3' from dual union all

select '4' from dual union all

select '5' from dual union all

select '6' from dual union all

select '8' from dual ) ,

z AS ( select 1 k, '1' a from dual union all

select 1 , '2' from dual union all

select 1 , '3' from dual union all

select 1 , '7' from dual union all

select 2,'1' from dual union all

select 2,'2' from dual union all

select 2,'8' from dual union all

select 3,'1' from dual union all

select 3,'3' from dual union all

select 4,'5' from dual union all

select 5,'6' from dual union all

select 6,'8' from dual )

 

 

새벽 늦게 까지 삽질하다 결국에는 고수님들의 도움을 얻고자 글을 남깁니다.

 

z 라는 테이블의 그룹핑을 t 테이블에 의존하여 카운트를 할수 있는지 문의 드립니다.

 

 

해당 결과가 맞으면 나머지는 버리고 맞는 순서대로 잡아야 하는데

예를 k 컬럼의 1의 데이타의 경우 '1,2,3,7' 이지만 '1,2,3' 으로 카운트를 하면 되는데

정말 생각대로 않되는군요

 

키 묶음 카운트

1 , '1,2,3' , 1

2 , '1,2' , 1

3 , '1,3' , 1

4 , '5' , 1

5 , '6' , 1

6 , '8' , 1

 

결과가 나와야 하는데 도저히 답이 없네요.

 

현명하신 고수님들의 답변 부탁드립니다.

 

감사합니다.

 

 

 

 

 

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

1. 결과의 카운트는 별 의미가 없어 보이네요?
  - 다른 특별한 의미가 있는지? 빼도 되는지?
2. t 에 '1,3,7' 이 있을 경우?
  - z 의 1(1,2,3,7)은 어디에 속하나요? ('1,2,3' OR '1,3,7' OR 둘다)

마농(manon94)님이 2014-05-14 08:38에 작성한 댓글입니다.

마농님 답변 감사합니다.

 

1. 실제로는 통계용이라서 데이타가 많습니다. 그래서 카운트를 넣었습니다.

 

2. 그룹의 기준이 낮은거 기준이라서 1,2,3에만 해당되야 합니다.

저거 이상의 기준은 없습니다. (1,2,3 ) , (1,2) , (1,3) , (2,3) 뿐입니다.

 

너무 감사합니다.

초보님이 2014-05-14 11:01에 작성한 댓글입니다. Edit

카운트에 대한 실제 예시 부탁드려요.

마농(manon94)님이 2014-05-14 13:04에 작성한 댓글입니다.

WITH T AS (

SELECT '1,2,3' A FROM DUAL UNION ALL

SELECT '1,2' FROM DUAL UNION ALL

SELECT '1,3' FROM DUAL UNION ALL

SELECT '2,3' FROM DUAL UNION ALL

SELECT '1' FROM DUAL UNION ALL

SELECT '2' FROM DUAL UNION ALL

SELECT '3' FROM DUAL UNION ALL

SELECT '4' FROM DUAL UNION ALL

SELECT '5' FROM DUAL UNION ALL

SELECT '6' FROM DUAL UNION ALL

SELECT '8' FROM DUAL ) ,

Z AS (

SELECT 1 K, '1' A FROM DUAL UNION ALL

SELECT 1 , '2' FROM DUAL UNION ALL

SELECT 1 , '3' FROM DUAL UNION ALL

SELECT 1 , '7' FROM DUAL UNION ALL

SELECT 2 , '1' FROM DUAL UNION ALL

SELECT 2 , '2' FROM DUAL UNION ALL

SELECT 2 , '3' FROM DUAL UNION ALL

SELECT 3,'1' FROM DUAL UNION ALL

SELECT 3,'2' FROM DUAL UNION ALL

SELECT 13,'1' FROM DUAL UNION ALL

SELECT 13,'2' FROM DUAL UNION ALL

 

 

SELECT 22,'8' FROM DUAL UNION ALL

SELECT 53,'1' FROM DUAL UNION ALL

SELECT 53,'3' FROM DUAL UNION ALL

SELECT 74,'5' FROM DUAL UNION ALL

SELECT 76,'5' FROM DUAL UNION ALL

 

SELECT 87,'6' FROM DUAL UNION ALL

SELECT 88,'8' FROM DUAL )

 

아 너무 피곤한 나머지 결과값을 제가 잘못적었네요

혼돈을 드려 너무 죄송합니다.

 

 

 

다음과 같이 가능할까요?

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

1,2,3 2

1,2 2

1,3 1

5 2

6 1

8 2

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

 

 

마농님 정말 감사합니다.

김기흥님이 2014-05-14 13:26에 작성한 댓글입니다. Edit

SELECT a
     , COUNT(*) c
  FROM (SELECT x.a
             --, y.k, y.b
             , ROW_NUMBER()
               OVER(PARTITION BY y.k ORDER BY LENGTH(x.a) DESC, x.a) rn
          FROM t x
             , (SELECT k
                     , LISTAGG(a, ',') WITHIN GROUP(ORDER BY a) b
                  FROM z
                 GROUP BY k
                ) y
         WHERE INSTR(y.b, x.a) > 0
        )
 WHERE rn = 1
 GROUP BY a
 ORDER BY LENGTH(a) DESC, a
;

마농(manon94)님이 2014-05-14 14:25에 작성한 댓글입니다.

마농님! 정말 대단하십니다.

 

 

잘쓰겠습니다.

 

 

너무나 감사합니다.

 

 

김기흥님이 2014-05-14 14:34에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40457계층형 쿼리 표현 [2]
초보초보
2014-05-15
7168
40456세션킬과 listener의 관계
디비초보
2014-05-15
6928
40455sql결과 문의드립니다. [1]
궁금
2014-05-14
6867
40453외부테이블에 의한 그룹핑에 대해 문의드립니다. [6]
초보
2014-05-14
6670
40452각 개인에게 순번채번할때 [2]
짠심이
2014-05-13
7340
40451어려운 쿼리 문의 [1]
꿈꾸러기
2014-05-13
7400
40450일련된 번호를 묶는것에 대해 문의드립니다. [2]
초보
2014-05-13
6762
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다