我不确定为什么我的号码相互之间大相径庭。
没有最大ID的查询:
SELECT id, DATE_FORMAT(t_stamp, '%Y-%m-%d %H:00:00') as date, COUNT(*) as count
FROM test_ips
WHERE id > 0
AND viewip != ""
GROUP BY HOUR(t_stamp)
ORDER BY t_stamp ASC;
我明白了:
1 2012-07-18 19:00:00 1313
106 2012-07-18 20:00:00 1567
107 2012-07-19 09:00:00 847
225 2012-07-19 10:00:00 5095
421 2012-07-19 11:00:00 205
423 2012-07-19 12:00:00 900
461 2012-07-19 13:00:00 619
490 2012-07-20 15:00:00 729
575 2012-07-20 16:00:00 1682
1060 2012-07-20 17:00:00 2063
2260 2012-07-20 18:00:00 1417
5859 2012-07-20 21:00:00 1303
7060 2012-07-20 22:00:00 1340
8280 2012-07-20 23:00:00 1211
9149 2012-07-21 00:00:00 1675
10418 2012-07-21 01:00:00 721
11127 2012-07-21 02:00:00 825
但如果我添加最大ID:
AND id <= 8279
我明白了:
1 2012-07-18 19:00:00 1313
106 2012-07-18 20:00:00 1201
107 2012-07-19 09:00:00 118
225 2012-07-19 10:00:00 196
421 2012-07-19 11:00:00 2
423 2012-07-19 12:00:00 38
461 2012-07-19 13:00:00 20
490 2012-07-20 15:00:00 85
575 2012-07-20 16:00:00 483
1060 2012-07-20 17:00:00 1200
2260 2012-07-20 18:00:00 1200
5859 2012-07-20 21:00:00 1201
7060 2012-07-20 22:00:00 1220
这些数字彼此不同。有点傻。
编辑:这是我的表结构:
id t_stamp bID viewip unique
1 2012-07-18 19:22:20 5 192.168.1.1 1
2 2012-07-18 19:22:21 1 192.168.1.1 1
3 2012-07-18 19:22:22 5 192.168.1.1 0
4 2012-07-18 19:22:22 3 192.168.1.1 1
答案 0 :(得分:1)
您不按ID分组,我认为您打算这样做。
尝试:
SELECT id, DATE_FORMAT(t_stamp, '%Y-%m-%d %H:00:00') as date, COUNT(*) as count
FROM test_ips
WHERE id > 0
AND viewip != ""
GROUP BY id, DATE_FORMAT(t_stamp, '%Y-%m-%d %H:00:00')
ORDER BY t_stamp;
答案 1 :(得分:0)
您的查询不一致。
在您的选择语句中,您显示的是完整日期。
但是您按小时分组数据。因此,您的计数语句将计算当天每小时的所有数据。
举一个例子来看你的第一个结果:
1 2012-07-18 19:00:00 1313
1313的计数包含一小时19:00的所有日期(7 / 18,7 / 19,7 / 20,7 / 21,7 / 22等)的记录。
但是你设置查询的方式看起来应该是2012-07-18 19:00:00所有记录的计数。
因此,当您添加AND id&lt; = 8279“7/21的日期和7/20的某些日期或不再计算时,您的计数值现在会降低。
我猜你的意思是分组日期和时间,而不仅仅是小时。