У меня есть таблица, называемая сеансами с двумя столбцами datetime: начало и конец.
В течение каждого дня (ГГГГ-ММ-ДД) может быть много разных начальных и конечных времен (HH: ii: ss). Мне нужно найти среднесуточное значение всех различий между этими начальными и конечными временами.
Пример нескольких строк:
start: 2010-04-10 12:30:00 end: 2010-04-10 12:30:50
start: 2010-04-10 13:20:00 end: 2010-04-10 13:21:00
start: 2010-04-10 14:10:00 end: 2010-04-10 14:15:00
start: 2010-04-10 15:45:00 end: 2010-04-10 15:45:05
start: 2010-05-10 09:12:00 end: 2010-05-10 09:13:12
...
Разница во времени (в секундах) для 2010-04-10 будет:
50
60
300
5
В среднем за 2010-04-10 будет 103,75 секунды. Я хотел бы, чтобы мой запрос возвращал что-то вроде:
day: 2010-04-10 ave: 103.75
day: 2010-05-10 ave: 72
...
Я могу получить разницу во времени, сгруппированную по дате начала, но я не уверен, как получить среднее значение. Я попытался использовать функцию AVG, но я думаю, что он работает только непосредственно с значениями столбцов (а не с результатом другой агрегатной функции).
Это то, что у меня есть:
SELECT
TIME_TO_SEC(TIMEDIFF(end,start)) AS timediff
FROM
Sessions
GROUP BY
DATE(start)
Есть ли способ получить среднее значение timediff для каждой группы дат начала? Я новичок в совокупности функций, поэтому, возможно, я что-то не понимаю. Если вы знаете альтернативное решение, поделитесь им.
Я всегда мог делать это ad hoc и вычислять среднее вручную на PHP, но мне интересно, есть ли способ сделать это в MySQL, поэтому я могу избежать запуска пучков.
Спасибо.