2013-02-24 155 views
1

我一直在谷歌上搜索了幾個小時......想這將是容易的,但顯然不是在兩個表我:)SQL銷售報告

我有銷售數據,我想生成特定項目的每週銷售報告。爲此,我不在乎美元價值,單位數量。一個「星期」可以是一個日曆周(無論是開始日期,我不關心),還是僅僅是從當前時間開始的7天大塊(所以第一週是最後7天,第二週是8 - 15天前,等等) - 以較容易的爲準。我只是試圖隨時監測銷售趨勢。最好是跨越多年,例如,如果它在1月份的第一週,它就不會只顯示一條記錄。

數據來自ZenCart。相關的表/列結構是在這裏:如果我有麻煩

Table "orders" has columns: orders_id, date_purchased 

Table "orders_products" has columns: orders_id, products_id, product_quantity 

與連接和語法。

+0

很多人使用http://sqlfiddle.com/發佈數據結構的問題。 – 2013-02-24 16:42:56

+0

您能否向我們展示您的樣品和預期數據? :) – aspiring 2013-02-24 16:43:54

+0

你知道,我意識到它比我想象的更簡單。也許桌子並不是真的有必要。我編輯了這個問題。 – bcsteeve 2013-02-24 18:09:42

回答

2

這個工作對我的需求:

SELECT o.date_purchased, CONCAT(YEAR(o.date_purchased), LPAD(WEEK(o.date_purchased), 2, '0')) as weekyear, op.products_id, SUM(op.products_quantity) 
FROM orders_products op 
LEFT JOIN orders o ON op.orders_id = o.orders_id 
WHERE op.products_id = 331 
GROUP BY weekyear 
ORDER BY weekyear 
+0

+1我離開了一段時間。很高興看到,你自己就明白了。保持! – 2013-02-24 21:05:05

0

如果你有一些date/datetime/timestamp列,您可以使用week功能的where子句中

select week(now()) as week, sum(units) as total 
from sales 
where week(sales_date) = week(now()); 

或前一週

select week(now()) - 1 as week, sum(units) as total 
from sales 
where week(sales_date) = week(now()) - 1; 

必須從本週照顧全年迴繞52/53到0/1周。

SQLFiddle進行測試。

+0

謝謝。我需要更多的手持。我不知道如何在這個星期包裝。此外,我希望它顯示結果表中的所有數據...不是每個結果的一個查詢。那可能嗎?一個「團體」類型的交易? – bcsteeve 2013-02-24 18:11:20