2012-04-10 51 views

回答

2

与其他答案一致。

SELECT itemcode, count(itemcode) 'times purchased', sum(quantity) 'amount purchased' 
FROM `temp_trans` 
WHERE `trans_date` >= '2012-01-08' AND `trans_date` <= '2012-03-23' 
GROUP BY itemcode 

这里是一个活生生的例子:http://sqlfiddle.com/#!2/13def/1

+0

如果我要设计一个购买表,我可以定义一个数量列。所以这必须是最接近和更一般的解决方案,IMO。 – 2012-04-10 17:46:39

1

如果你有一个名为日期列dt可以使用

SELECT COUNT(Id) FROM your_table 
WHERE dt BETWEEN 2012-01-08 AND 2012-03-23 
    AND Id = your_item_id 
1
select id, count(*) 
from mytable 
where date between '2012-01-01' and '2012-02-02' 
group by id 

这给你的时间每一项目被购买的数量。你分组的领域将取决于你希望你的结果如何分裂,使用id或唯一的名字将取决于你想要对结果做什么。

间的子句是包容btw

编辑:好点的评论!可能应该说“使用适当的字段进行分组,如项目的名称或ID”。在我们的一些系统中描述和名称可以互换使用:)

+0

你查询的工作(这是语法正确的),但我会害怕到GROUP BY说明:不同的项目可能有相同的描述!反正OP没有告诉我们什么,所以做得很好。 +1为你 – Marco 2012-04-10 17:27:45

+2

我想你最好使用默认的日期语法:'YYYY-MM-DD'。 – Marco 2012-04-10 17:31:08

相关问题