2012-05-11 2 views
0

다음과 같이 데카르트 제품을 사용하여 2 개의 테이블을 결합합니다.오라클 SQL 개발자 - 데카르트 제품, 카운트/합계 및 그룹 결합

select p.type, i.amount 
FROM products p, invoice i 
where (p.account = i.id); -- column headers cant be changed despite having same info 

물론이 두 열에는 각각의 값이 표시됩니다.

그러나 그렇다면 COUNT/GROUP BY 및 SUM/GROUP BY를 사용하여 데이터를 더 조작하고 싶지만 2 개의 테이블을 사용하여 작업 할 수있는 관련 예제를 찾을 수 없습니다. (모든 것을 개별적으로 수행하는 것은 괜찮습니다. 단지 함께 작업하도록하는 것이 문제입니다).

최종 결과를 위해, 각 유형에 속하는 항목의 수와 각 유형에 대한 총 금액/SUM과 함께 4 가지 유형의 그룹화를 보여주는 3 개의 컬럼을 표시하려고합니다.

유형 - 유형의 수 - 합계 값

A - 5-500

B - 6-1000

C 1 - - 50

D - 2 - 100

+0

어떤 쿼리를 시도 했습니까? 무엇이 잘못 되었습니까? – Rene

+0

귀하의 질의는 더 이상 데카르트 제품이 아닙니다. 이미 내부 조인 작업입니다. –

답변

1

시도해 보셨습니까?

select p.type, count(p.type) Cnt, sum(i.amoumt) Total 
FROM products p, invoice i 
where (p.account = i.id) 
group by p.type 
+0

완벽하게 작동합니다. 나는 이미 비슷한 것들을 시도했지만 didnt는 해결책에 얼마나 가까웠는지 깨닫습니다 ... 감사합니다 –

+0

결과가 p.type으로 정렬되기를 원한다면 우발적 인 주문에 의존하기에 충분하지 않습니다. GROUP BY 절을 사용하십시오. GROUP BY가 항상 정렬되지는 않으므로 명시 적으로 ORDER BY를 사용해야합니다. –

0

곰 쿼리의 결과가 테이블 또는 뷰에 논리적으로 동일하다 마음에 - 그들 모두는 하나 이상의 열이있는 0 개 이상의 행의 투영이다.

일반적으로 선택할 수있는 테이블에 대해 수행 할 수있는 작업은 쿼리 나보기에도 적용 할 수 있습니다. 일부 제한 사항에도 불구하고 테이블에서와 마찬가지로 뷰와 쿼리에 대한 삭제 및 업데이트를 적용 할 수 있습니다.

의심하는 경우, 원하는 데이터를 반환하는 쿼리를 만든 다음 테이블로 취급 : 또한

select type, 
     count(type) count_type, 
     sum(amount) sum(amount) 
from  (select ...) 
group by type 

참고가 참조해야하는 경우 특정 appplications이있는 하위 쿼리 인수 분해 절, 동일한 논리 데이터 세트를 여러 번 설정 :

with my_data as(
    select ...) 
select type, 
     count(type) count_type, 
     sum(amount) sum(amount) 
from  my_data 
where type in (select ... from my_data) 
group by type 
관련 문제