使用PHP和MySQL。
我的数据库结构是这样的:
id, user, car, view_stamp
view_stamp是像这样的TIMESTAMP: 2014-02-05 11:11:47
我想做的是user
在过去24小时内的任何一小时范围内获得超过100次观看的“ ”。
这是我在循环查询中的失败尝试:
SELECT user, COUNT(id) AS TotalViews
FROM car_views
WHERE TotalViews > 100 AND view_stamp > DATE_SUB(NOW(),INTERVAL 1 DAY)
ORDER BY TotalViews DESC
LIMIT 10
上面没有“一小时跨度”的要求,我也不知道如何包括在内。我确定这听起来令人困惑,所以让我尝试重新措辞,以防万一我在上面没有道理...
检查时间仅为过去24小时。在这24小时内,我需要知道是否有任何用户在给定的1小时内浏览了100次以上。
谢谢你的帮助。如果我缺少任何有用的信息,请告诉我,我将进行编辑。
您需要使用GROUP BY
以获得每个用户每小时的总计。而且,您必须使用它HAVING
来测试汇总数据。
SELECT user, HOUR(view_stamp) AS the_hour, COUNT(*) AS hourly_views
FROM car_views
WHERE view_stamp > DATE_SUB(NOW(), INTERVAL 1 DAY)
GROUP BY user, the_hour
HAVING hourly_views > 100
ORDER BY hourly_views DESC
LIMIT 10
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句