如何在mysql中使用group by keyword获取每天的信息

时间:2011-05-13 17:46:53

标签: mysql datetime group-by

我是mysql的新手,我目前遇到查询问题。我需要在一周内每天获得每项活动的平均持续时间。日期格式如:'2000-01-01 01:01:01',但我想摆脱01:01:01的事情,只关心日期。我该怎么做?

表格是这样的:

record_id   int(10)      NOT NULL,
activity_id varchar(100) NOT NULL,
start_time  datetime     NOT NUll,
end_time    datetime     NOT NULL,
duration    int(10)      NOT NULL;

感谢。

3 个答案:

答案 0 :(得分:0)

如果我理解,您希望按不同的活动时间进行分组,并查看每个活动开始和结束之间的平均天数。这应该为你做。

SELECT activity_id, avg(DATEDIFF(end_time, start_time)) AS Average 
FROM tablename 
GROUP BY activity_id, DAYOFWEEK(start_time)

编辑:误解,你希望它在当天被分解,所以这应该拉动每个组,按照start_time所在的星期几分解,然后是start_time和end_time之间的平均天数。 / p>

答案 1 :(得分:0)

您可以执行以下操作

select activity_id, dayofweek(datetime) as day, avg(duration) as average
from table_name  where datetime between start_date and end_date
group by activity_id,dayofweek(datetime)

答案 2 :(得分:0)

您可以使用date_format(end_time, '%Y%m%d')将其转换为白天的可排序值。把它放在表达式的组中,这应该做你想要的。