2012-10-17 108 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))不是? –