繁体   English   中英

如何使用sql查询过滤每个月的总销售记录?

[英]How to filter the total sales record every month using sql query?

我正在生成一份销售报告,但查询时遇到了麻烦。 我的查询能力不是很好。 希望您能帮到我。 好的,这是。

我有一张销售桌。 结构就像这个EX:

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,0,1,1

2代表1月,3代表2月,依此类推...

我的查询看起来像这样,但是我知道这是错误的.. :(

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))

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 ...

这应该为您工作。

我认为您可以检索日期并使用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月,依此类推,因此您只需将$ month加1,您便拥有了所需的内容。

希望它能工作

SELECT COUNT(product_id) FROM sales_table GROUP BY DATENAME(month, date_purchased)

更详尽的解决方案

获得月-明智的

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');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM