1

我有一个包含以下列的 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)。不幸的是,我无法弄清楚错误是什么。

我考虑过将年、月、星期、小时、分钟等放在不同的列中,但我觉得应该可以在查询中选择日期时间字段的子字段。

谢谢!

4

1 回答 1

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;
于 2012-10-17T15:44:34.927 回答