2011-01-24 102 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 

我能做到這一點創建一個表視圖,但因爲我只需要一個給定的部門記錄(有很多),使用一種能夠爲所有部門產生結果的觀點似乎效率低下。

回答

4

這裏有一個表掃描查詢兩種方式:

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 

這將使用case過濾舊的行出第二sum()的。

+0

謝謝!訣竅! – 2011-01-25 10:59:34