我有一张包含“地方”的表格和一张包含“访问次数”的表格。
表:
Place(place_id(pk))
Visit(v_id, user_id, timestamp, place_id(fk))
我想通过唯一的user_id来了解整个访问表中平均每1小时对一个地方的访问次数。
答案 0 :(得分:0)
要按每个不同的小时计算每个用户一次,您可以使用DATE(timestamp), HOUR(timestamp)
COUNT(DISTINCT user_id, DATE(timestamp), HOUR(timestamp))
获取可以使用的不同小时数
TIMESTAMPDIFF(HOUR, MIN(timestamp), MAX(timestamp))
或
COUNT(DISTINCT DATE(timestamp), HOUR(timestamp))
可能更慢但可能更准确。
然后使用分区来获取AVG:
SELECT place_id,
COUNT(DISTINCT user_id, DATE(timestamp), HOUR(timestamp))
/ TIMESTAMPDIFF(HOUR, MIN(timestamp), MAX(timestamp)) AS avg_visits_per_hour
FROM Visit
GROUP BY place_id