У меня есть таблица со столбцами START_DATE и END_DATE.
Я хочу получить среднюю разницу во времени между этими временными метками для каждого часа, но только между часами с 9:00 до 18:00 в течение последних нескольких дней. Я хотел бы, чтобы вывод выглядел так:
elapsed hour
-------------
2.5 11 <--today at 11AM
1.7 10
2.4 9
1.9 18 <--this is yesterday
2.4 17
4.0 16
Я считаю, что я довольно близко, но я просто не могу заставить код работать. Вот что у меня есть:
SELECT
TRUNCATE(AVG(TIME_TO_SEC(TIMEDIFF(END_DATE, START_DATE))/60), 2) as elapsed,
EXTRACT(HOUR FROM END_DATE) as hour
FROM
TIME_INFO
WHERE
EXTRACT(HOUR FROM END_DATE) BETWEEN 9 AND 18 AND
DATE(END_DATE) > CURDATE() - INTERVAL 3 DAY
GROUP BY
EXTRACT(HOUR FROM END_DATE)
ORDER BY
END_DATE DESC
Это близко, но возвращает только то, что я хочу, три дня назад, а не через несколько дней, как хотелось бы. Я использую mySQL 5.0, у кого-нибудь есть идеи?