2014-06-09 54 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 ...)」。 –