나는 다음과 같은 스키마 두 테이블을했습니다는 계산 가져 오기 위해 두 테이블을 결합
GROUP_ID | PURCHASE_ID |ITEMS ---> TABLE1
1 21 X
1 21 Y
1 21 Z
2 22 X
GROUP_ID |CUSTOMER_ID |ITEMS --->TABLE2
1 ABC X
1 ABC Y
1 ABC Z
1 ABC A
1 ABC B
단일 GROUP_ID 여러 항목과 유사 하나 GROUP_ID 및 CUSTOMER_ID 항목의 여러 ITEMS.The을 가질 수있을 수 있습니다 PURCHASE_ID 구입 한 수량은 GROUP_ID 당 PURCHASE_ID 당 2 ~ 3 개이지만 주어진 CUSTOMER_ID가있는 GROUP_ID는 여러 항목을 가질 수 있습니다.
각 GROUP_ID 및 PURCHASE_ID 및 ITEMS [집합]에 대해 쿼리하고 싶습니다. 얼마나 많은 고객이 적어도 모든 ITEMS를 구입했는지 궁금합니다. I는했습니다 항목 [X, Y, Z]의 서브 세트를 갖는 ID ABC와 고객이 존재하므로 1이어야 GROUP_ID = 1 PURCHASE_ID = 21 카운트에 대한 상기 소정의 데이터를 들면
select distinct GROUP_ID,PURCHASE_ID,count(object_id)over(partition by GROUP_ID,PURCHASE_ID) from
(select a.GROUP_ID GROUP_ID,a.PURCHASE_ID PURCHASE_ID,b.CUSTOMER_ID object_id from
(select GROUP_ID,PURCHASE_ID,items,count(items)over(partition by GROUP_ID,PURCHASE_ID) val from TABLE1)a,
(select GROUP_ID,CUSTOMER_ID,ITEMS from TABLE2)b
where a.GROUP_ID=b.GROUP_ID and a.items=b.ITEMS and val=3
group by a.GROUP_ID,a.PURCHASE_ID,b.CUSTOMER_ID
having count(*)=3)
위의 3 가지 항목에 대한 고객 수를 가져 오는 코드를 작성해야합니다. 이를 최적화하거나이를 달성 할 수있는 방법이 있습니까?
도움이 많이 있습니다.
귀하의 질문은 각 테이블에 대한 예제 데이터를 제공 한 다음 기대되는 결과를 얻을 수있는 이점이 있습니다. – Anand
@Anand 예상되는 입력 및 출력을 추가했습니다. –