Как получить зрителей по диапазону времени от времени начала просмотра и продолжительности просмотра?

У меня есть небольшая проблема, чтобы сделать статистику.

люди могут смотреть видео на моем сайте. Я храню некоторые данные в таблице 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?
если у кого-нибудь есть идея для меня, я буду очень благодарен

1

Решение

Может как то так?

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), вы можете использовать GROUP CONCAT из имен / идентификаторов пользователя или чего-то еще 🙂

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]