首先,该字段的日期格式为TIMESTAMP
我有一个由id,domain,hits,when组成的表。
现在,当我将命中数据插入数据库时,我每10分钟从我的分析API中提取一次。所以这个表的内容是
id=1, domain=test.com, hits=930, when=2011-11-22 16:00:22;
id=2, domain=test2.com, hits=134, when=2011-11-22 16:10:22;
等
在过去六个小时内,每隔10分钟填满一次数据,我想找到每个小时每个域的点击次数。这样:
每10小时插入一次,每小时会有6行,如何检索每小时的总点击次数?
如果我想在当前时间下午1:39提取统计数据,我应该能够在下午1:10,下午1点20分,下午1点半之前完成所有点击。
我是否需要六个单独的mysql查询,这些查询占用当前时间并且每小时运行一次因为我在图表中显示它(1小时前,2小时前,3小时前等)或者是否更简单实现这个的方法?
请帮助我理解,谢谢!
答案 0 :(得分:2)
你可以尝试
select domain, date_format(when, '%Y-%m-%d %I%p') hour, sum(hits)
from table group by domain, hour
编辑:我将格式从%H
24小时改为%I%p
,时间为12小时,AM / PM,因为看起来这就是你想要的。
EDIT2:如果只是你想要的最后六个小时,按照点击次数分组,你可能会更好(将date_format添加到整个小时组)
select domain, hour(timediff(date_format(now(), '%Y-%m-%d %H'),
date_format(when, '%Y-%m-%d %H'))) hours, sum(hits)
from table
where hours < 7
group by domain, hours