每1小时查找一次独特用户的平均访问量

时间:2017-03-11 12:30:50

标签: mysql

我有一张包含“地方”的表格和一张包含“访问次数”的表格。

表:

Place(place_id(pk))
Visit(v_id, user_id, timestamp, place_id(fk))

我想通过唯一的user_id来了解整个访问表中平均每1小时对一个地方的访问次数。

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