最近使用したアイテムをログに記録するという名前のテーブルがあり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
過去 1 時間にアクセスされたアイテムを数え、アクセス数で並べ替え、上位 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