Допустим, есть таблица. В таблице есть поле дата DATETIME. В эту таблицу данные записываются каждые пол часа. Есть поле с int типом. Нужно вывести средние значение за интервалы:
00:00 - 03:00
03:00 - 06:00
06:00 - 09:00
То есть получается, допустим, записей 12 записей в базе, но в выводе будет 3, которые и являются средними значениями за периоды.
Или то же самое по дням.
Есть вариант:
( select avg(value) from t where (date > '01-10-2012 06:00' and date < '01-10-2012 09:00' ) ) union ( select avg(value) from t where (date > '01-10-2012 03:00' and date < '01-10-2012 06:00' ) ) union ... ну вы поняли, но это как-то не айс
или group by DATE_FORMAT(t1.rdate, '%Y-%m-%e %k'), но это работает только при почасовой группировке
Может можно обыграть, если использовать Unixtime формат?
Примечание:
и если кто знает, в group by можно засунуть регулярное выражение, чтоб обыграть с unixtime? Или синтаксис, как у оператора like?
Примечание:
PetSerAl (Сергей Петров), не работает.
Примечание:
PetSerAl (Сергей Петров), выводит данные за каждый час. Не группирует по 3 часа.
Примечание:
есть мысли, что можно обыграть с case
Примечание:
о, работает, спасибо
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.