2014-06-09 37 views
0

说我有这个.csv文件,其中包含描述产品销售的数据。现在说我想要每月的销售数量细目。我的意思是我想看看在2005年1月收到了多少订单,FEB2005 ... JAN2008,FEB2008 ... NOV2012,DEC2012。使用SQL计数数据

现在我能想到的一个非常简单的方法就是像这样一个一个地计数。 (顺便说一句,我使用LOGPARSER运行我的查询)

logparser -i:csv -o:csv "SELECT COUNT(*) AS NumberOfSales INTO 'C:\Users\blah.csv' FROM 'C:\User\whatever.csv' WHERE OrderReceiveddate LIKE '%JAN2005%' 

我的问题是,如果有一个更聪明的方式来做到这一点。我的意思是,不是一次又一次地改变月份并运行我的查询,我可以写一个查询,它可以在一个excel中产生结果。

+0

是的,有一个更聪明的方法来做到这一点:GROUP BY。 – duffymo

回答

0

是的。

如果您将一个group by子句添加到该语句中,那么sql将为该group by列的每个唯一值返回一个单独的计数。

所以,如果你写:

SELECT OrderReceiveddate, COUNT(*) AS NumberOfSales INTO 'C:\Users\blah.csv' 
FROM `'C:\User\whatever.csv' GROUP BY OrderReceiveddate` 

你会得到类似的结果:

JAN2005 12

FEB2005 19

MAR2005 21

0

假设OrderReceiveDate是一个日期,你可以将日期格式化为年份和月份a nd then aggregate:

SELECT date_format(OrderReceiveddate, '%Y-%m') as YYYYMM, COUNT(*) AS NumberOfSales 
INTO 'C:\Users\blah.csv' 
FROM 'C:\User\whatever.csv' 
WHERE OrderReceiveddate >= '2015-01-01' 
GROUP BY date_format(OrderReceiveddate, '%Y-%m') 
ORDER BY YYYYMM 

您不想在日期列上使用likelike需要字符串参数。改用日期函数。

+0

它给我一个错误。 “无法找到有效的:'DATE_FORMAT(Orderreceiveddate ...)”。 –