假设我有这个.csv文件,其中包含描述产品销售情况的数据。现在说我想要每月细分销售数量。我的意思是我想知道在JAN2005,FEB2005 ... JAN2008,FEB2008 ... NOV2012,DEC2012收到了多少订单。
现在我能想到的一个非常简单的方法是像这样一个接一个地计算它们。 (顺便说一句,我使用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 :(得分:0)
是
如果在语句中添加group by子句,则sql将按列的每个唯一值返回单独的计数。
所以如果你写:
SELECT OrderReceiveddate, COUNT(*) AS NumberOfSales INTO 'C:\Users\blah.csv'
FROM `'C:\User\whatever.csv' GROUP BY OrderReceiveddate`
你会得到如下结果:
JAN2005 12
FEB2005 19
MAR2005 21
答案 1 :(得分:0)
假设OrderReceiveDate
是一个日期,您可以将日期格式化为年份和月份,然后汇总:
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
您不希望在日期列中使用like
。 like
需要字符串参数。改为使用日期函数。