2013-02-24 103 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