我做统计有点问题
人们可以在我的网站上观看视频。我将一些数据存储在 mysql 表 videos_has_views 中
IdUser = the watcher ID
ddv = date of view = the start time of the view
duration = the duration of the view
我想得到的是按时间范围有多少观众活跃的数组。
例如:
John start viewing at 2017-01-01 00:00:00 and watch video for 1800 seconds (30mn)
Hodor start viewing at 2017-01-01 00:00:00 and watch video for 1200 seconds (20mn)
Rob start viewing at 2017-01-01 00:10:00 and watch video for 1800 seconds (30mn)
我试着得到一个像这样的数组
From 0 to 10min : 2 viewers (john + hodor)
From 10 to 20min : 3 viewers
From 20 to 30 : 2 viewers (john + Rob)
From 30 to 40 : 1 viewer (rob)
但我不知道如何用 mysql 或 php 中的循环来解决这个问题? 如果有人对我有想法,我将非常感激
最佳答案
也许是这样的?
SELECT
CASE
WHEN duration BETWEEN 0 AND 600 THEN '0to10'
WHEN duration BETWEEN 601 AND 1200 THEN '10to20'
WHEN duration BETWEEN 1201 AND 1800 THEN '20to30'
ELSE 'moreThan30'
END as duration_range,
count(IdUser) as cnt
FROM videos_has_views
GROUP BY duration_range
ORDER BY duration_range ASC;
你可以根据需要创建任意数量的范围......它有效(至少在 MySQL 5.7 中) 如果您想在另一列中包含名称,那么(因为我们使用的是 GROUP BY)您可以使用来自名称/用户 ID 或其他内容的 GROUP CONCAT :)
关于php - 如何按时间范围从观看开始时间和观看持续时间获取观众?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41850581/