我有一个表,称为log
记录最近使用的项目,列如下:
u_id
(唯一编号)item_id
(项目 ID 号)access_time
(服务器时间戳)
我想创建一个查询来查找一段时间内访问次数最多的项目的趋势。例如,在过去 60 分钟(服务器时间)内访问次数最多的前 10 个项目是什么。
如何创建这样的查询?
SELECT item_id, COUNT(*) FROM log
WHERE TIMESTAMPDIFF(MINUTE, access_time, NOW()) <= 60
GROUP BY item_id
ORDER BY COUNT(item_id) DESC
LIMIT 0,10
我只计算最近一小时内访问的项目,按访问次数排序,并获得前 10 名:
SELECT item_id, COUNT(*)
FROM log
WHERE access_time >= DATE_SUB(CURDATE(), INTERVAL 1 HOUR)
GROUP BY item_id
ORDER BY 2 DESC
LIMIT 10