我正在生成一份销售报告,查询时遇到了困难。我不是很善于质疑。我希望你能帮我。好的,在这里。
我有一张销售表。结构是这样的例如:
product_id name date_purchased
1 apple 2014-01-03 12:00:59
2 orange 2014-01-05 10:12:20
3 banana 2014-02-01 09:25:01
4 mango 2014-02-20 18:13:25
5 stawberry 2014-02-28 13:14:30
6 jackfruit 2014-05-26 08:16:31
7 grapes 2014-11-03 09:25:21
8 guava 2014-12-25 10:15:45
现在我想统计一下每个月购买的商品我的输出结果应该是这样的
2,3,0,0,1,0,0,0,0,1,1
2表示Jan,3表示二月,等等。
我的查询看起来是这样的,但我知道它是错误的..:(
SELECT COUNT(product_id) FROM sales_table GROUP BY date_purchased
如何使用查询来完成此操作?或者我应该为此制作一个PHP函数吗?
这样尝试:
SELECT year(date_purchased), month(date_purchased), COUNT(product_id)
FROM sales_table
GROUP BY concat(year(date_purchased), month(date_purchased))
我认为您可以检索日期并使用PHP,因为它非常直接。
一旦你有了约会,比如说
$date_str = "2014-01-03 12:00:59"; //let's say you fetch this from DB
$month = date('m',strtotime($date_str)); //this will automatically output 1
你提到过,2代表1月,3代表2月等等,所以你可以每月增加1到美元,你就有了你需要的。
希望它能在中工作
SELECT COUNT(product_id) FROM sales_table GROUP BY DATENAME(month, date_purchased)
SQL查询就足够了。您必须使用分组依据。但首先要为您的表制作一个月列。
create function byMonth(@myDate datetime)
returns datetime
as
begin
declare @newDate
set @newDate = year(@myDate) + '/' + month(@myDate) + '/1 00:00:00'
return @newDate
end
go
并在您的查询中使用这个:
Select Count(*),byMonth(date_puchased) as x
from myTable
where ...
group by x
having ...
这应该对你有用。
更详细的解决方案
获取按月
SELECT COUNT(id) FROM testrec GROUP BY DATE_FORMAT(pur,'%M');
获取的所有详细信息
SELECT COUNT(product_id),`name` , date_purchased, DATE_FORMAT(date_purchased,'%M') FROM sales_table GROUP BY DATE_FORMAT(pur,'%M');