2012-10-17 185 views
1

的頻率我有一個MySQL數據庫有以下的列:排序日期

ID(INT) 持續時間(FLOAT) 起始日期(DATETIME)

我想獲得模態統計(頻數)爲持續時間和start_date列。

排序由頻率事件的持續時間是直截了當:

SELECT duration, COUNT(duration) 
AS frequency 
FROM trips 
GROUP BY duration 
ORDER BY frequency 
DESC; 

如果我運行的起始日期列此相同的查詢,我得到的形式的結果:

(datetime.datetime(2012, 8, 20, 15, 22), 6L) 

(I」 m使用python來訪問數據庫)。但是,按分鐘接收我的查詢並不一定有幫助 - 一個月,一週中的哪一天和哪一小時是更有用的查詢。我試着改變查詢:

SELECT MONTH(start_date), COUNT(MONTH(start_date)) 
AS frequency 
FROM trips 
GROUP BY start_date 
ORDER BY frequency 
DESC; 

但是,如果我這樣做,那麼我開始得到我的SQL語法(錯誤1064)錯誤。不幸的是,我一直無法弄清楚錯誤是什麼。

我曾考慮將年,月,星期,小時,分鐘等放在不同的列中,但我覺得應該可以在查詢中選擇日期時間字段的子字段。

謝謝!的起始日期月

+1

集團由MONTH(開始),而不是 –

回答

1

計數頻率:持續時間的

SELECT YEAR(start_date), MONTH(start_date), COUNT(*) AS frequency 
FROM trips 
GROUP BY YEAR(start_date), MONTH(start_date) 
ORDER BY frequency DESC; 

計數頻率:

SELECT duration, COUNT(*) AS frequency 
FROM trips 
GROUP BY duration 
ORDER BY frequency DESC; 
+0

謝謝!這是完美的。爲什麼COUNT(*)工作但COUNT(MONTH(start_date))不是? –