2017-09-08 1 views
-2

먼저 2016 년 1 월부터 3 개월 동안 스포츠 및 음악 부서의 합계를 구해야합니다. 둘째로, 2016 년의 모든 TotalPrice의 합계로 나누기 전에 쓴 결과를 가져와야합니다. 모든 부서 및 세 번째 - 첫 번째 결과를 모든 합계 가격의 합계로 나누어야합니다. 모든이 동일한 쿼리!어떻게하면 이익을 가진 쿼리를 만들 수 있습니까?

감사합니다.

Sales라는 테이블과 속성은 S_id, date, department, totalPrice입니다.

이 내 CHRY입니다 :

Select sum(TotalPrice) as sportMusic, sportMusic/sum(TotalPrice) 
From Sales 
Where (Department="MUSIC" OR Department="SPORT") and 
     DATE BETWEEN "2016/01/01" AND "2016/03/31" 
+3

표 정의, 샘플 표 데이터 및 예상 결과 (이미지가 아닌 형식이 지정된 텍스트)를 추가하십시오. 또한 현재 쿼리 시도를 보여주십시오. – jarlh

+0

E/R 모델에 대해 알고 계십니까? – Frank

+0

Sales라는 테이블과 속성은 S_id, date, department, totalPrice입니다. 이 내 CHRY입니다 : sportMusic, sportMusic로 선택 합 (TotalPrice)/합계 (TotalPrice) 판매 에서 경우 2016/01 "BETWEEN (부서 ="MUSIC "OR 부서 ="SPORT ") 및 날짜/01 "AND"2016/03/31 " – user3374271

답변

0

당신은 당신의 쿼리 및 절에서 서브 쿼리로 두 개 더 쿼리를 (또한 "파생 테이블")를 사용할 수 있습니다. 세 결과 행을 교차 결합하고 select 절에서 합계를 사용하십시오.

select 
    ms_2016_q1.total as ms_2016_q1_total, 
    ms_2016_q1.total/all_2016.total as rate_2016, 
    ms_2016_q1.total/all_years.total as rate_all 
from 
(
    select sum(totalprice) as total 
    from sales 
    where department in ('MUSIC', 'SPORT') 
    and date between date '2016-01-01' and date '2016-03-31' 
) ms_2016_q1 
cross join 
(
    select sum(totalprice) as total 
    from sales 
    where date between date '2016-01-01' and date '2016-12-31' 
) all_2016 
cross join 
(
    select sum(totalprice) as total 
    from sales 
) all_years; 
관련 문제