2012-04-14 54 views
0

我有一个MYSQL表记录点击到一个网站它的形式(如果需要,这可以改变,我在'这是可行的'阶段项目)的:计数行匹配unix时间戳(MYSQL)的不同时间间隔

+----+-----------+---------+----------+------------+ 
| id | useragent | url | loadTime | unixtime | 
+----+-----------+---------+----------+------------+ 
| 1 | Chrome |/  |  300 | 1334354015 | 
| 2 | Chrome |/  |  330 | 1334354020 | 
| 3 | Opera  | /about/ |  310 | 1334354100 | 
+----+-----------+---------+----------+------------+ 

我想要做的是计算命中的每一天,以及平均每天和其他的事情以后再说了加载时。

要计算命中次数,我知道如何做到这一点的唯一方法是使用服务器端语言来SELECT *,然后循环,用一天之间的unix时间来计算行数。什么是适当的SQL方式来做到这一点,或者我应该坚持选择*,循环?

回答

2

假设您的表名称是访问。

select date(FROM_UNIXTIME(unixtime)) as visitDate, count(v.id) from visits v group by visitDate; 

应该只是罚款.. 如果你想通过过滤URL页面的结果;

select date(FROM_UNIXTIME(unixtime)) as visitDate, url, count(v.id) from visits v group by visitDate, url; 

如果你想看到今天的访问;

select date(FROM_UNIXTIME(unixtime)) as visitDate, count(v.id) from visits v where date(now()) = date(FROM_UNIXTIME(unixtime)) group by visitDate; 

我还没有测试任何这些,可能需要一点修改。

+0

哇,太棒了。单独的FROM_UNIXTIME很酷 - 我计划在unix时间制定今天的日期,然后添加24 * 60 * 60,然后在该范围内查找所有内容等。非常感谢 - 所有查询都是第一次工作:) – 2012-04-14 14:47:07