我有一个包含以下列的MySQL数据库:
id(INT) 持续时间(FLOAT) start_date(DATETIME)
我想获得持续时间和start_date列的模态统计信息(频率计数)。
按频率对事件的持续时间进行排序非常简单:
SELECT duration, COUNT(duration)
AS frequency
FROM trips
GROUP BY duration
ORDER BY frequency
DESC;
如果我在start_date列上运行相同的查询,我会得到表单的结果:
(datetime.datetime(2012, 8, 20, 15, 22), 6L)
(我正在使用python访问数据库)。但是,接收按分钟分类的查询并不一定有用 - 月,星期几和小时是更有用的查询。我已经尝试将查询更改为:
SELECT MONTH(start_date), COUNT(MONTH(start_date))
AS frequency
FROM trips
GROUP BY start_date
ORDER BY frequency
DESC;
但是,如果我这样做,那么我开始收到有关我的SQL语法的错误(错误1064)。不幸的是,我无法弄清楚错误是什么。
我已经考虑过将年,月,星期,小时,分钟等放在不同的列中,但我觉得应该可以在查询中选择日期时间字段的子字段。
谢谢!
答案 0 :(得分:1)
计算start_date个月的频率:
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;