У меня есть таблица под названием Сессии с двумя столбцами даты и времени: запустите и закончитесь.
В течение каждого дня (YYYY-MM-DD) там могут быть многие различный запуск и время окончания (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
...
Разница во времени (в секундах) на 10.04.2010 была бы:
50
60
300
5
Среднее число на 10.04.2010 составило бы 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 для каждой группы даты начала? Я плохо знаком с агрегатными функциями поэтому, возможно, я неправильно понимаю что-то. Если Вы знаете об альтернативном решении, совместно используйте.
Я мог всегда делать это для данного случая и вычислять среднее число вручную в PHP, но я задаюсь вопросом, существует ли способ сделать это в MySQL, таким образом, я могу постараться не выполнять набор циклов.
Спасибо.
SELECT DATE(start) AS startdate, AVG(TIME_TO_SEC(TIMEDIFF(end,start))) AS timediff
FROM Sessions
GROUP BY
startdate