2011-01-24 4 views
2

주어진 부서의 각 영업 사원에 대한 지난 7 일 동안의 총 판매액과 판매액이있는 보고서를 작성해야합니다. 나는 각 판매에 대해 영업 사원의 날짜, 금액 및 ID를 나열한 테이블과 영업 사원을 부서에 매핑하는 테이블을 가지고 있습니다.SQL - 총계와 주간 합계의 2 개의 부속 조회 합치기

주간 및 총합 모두를 단일 쿼리에 표시하려면 어떻게합니까?

각각에 대한 질의는 다음과 같습니다

SELECT user_id,sum(amount) AS total_amount 
FROM sales 
LEFT JOIN users 
ON sales.user_id = users.id 
WHERE users.department = 1 
GROUP BY user_id 

SELECT user_id,sum(amount) AS total_amount 
FROM sales 
LEFT JOIN users 
ON sales.user_id = users.id 
WHERE users.department = 1 AND date > (NOW()-INTERVAL 1 WEEK) 
GROUP BY user_id 

나는이 테이블 중 하나에 대한 뷰를 생성 할 수 있지만, 나는 단지 거기 (특정 부서에 대한 기록이 필요하기 때문에 많은 경우), 모든 부서의 결과를 생성하는보기를 사용하면 비효율적 인 것처럼 보입니다.

SELECT user_id 
,  sum(amount) as total 
,  sum(case when date > (NOW()-INTERVAL 1 WEEK) then amount end) as weekly 
FROM sales 
LEFT JOIN 
     users 
ON  sales.user_id = users.id 
WHERE users.department = 1 
GROUP BY 
     user_id 

이 두 번째 sum()에서 오래된 행을 필터링 할 case을 사용

답변

4

여기에 하나 개의 테이블 스캔으로 모두를 조회 할 수있는 방법입니다.

+0

고마워요! 트릭을! –