| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MySQL > Почасовая статистика SELECT |
| Автор: Veve 12.2.2007, 19:06 |
| Здр... Есть таблича: ---------------------------------------------------------------- | дата смерти | Убитый таракан ----------------------------------------------------------------- ................................................................................. | 2009-01-09 13:01:59 | Жорик ----------------------------------------------------------------- | 2009-01-09 13:02:59 | Зюзя ------------------------------------------------------------------ | 2009-01-09 16:00:01 | Ефросий .................................................................................. __________________________________________ Подскажите пожалуста как создать следующий запрос: Запрос должен работать в промежутке времени, ну к примеру так: dead_time BETWEEN '2009-01-09 13:00:00' AND '2009-01-09 17:00:00') и групировать количество убитых тараканчиков по часам... Ну типо того: с 2009-01-09 13:00:00 до 14:00:00 убито 2 тараканчика с 2009-01-09 14:00:00 до 15:00:00 убито 0 тараканчиков с 2009-01-09 15:00:00 до 16:00:00 убито 0 тараканчиков с 2009-01-09 16:00:00 до 17:00:00 убито 1 тараканчик Ну я думаю... что что-то в такой степи должно быть ну только чё-то не хватает... SELECT count(*) FROM tarakan WHERE (dead_time BETWEEN '2009-01-09 13:00:00' AND '2009-01-09 17:00:00') GROUP BY hour(dead_time); зарание спасибо! |
| Автор: muzer 12.2.2007, 19:20 | ||||
|
| Автор: skyboy 12.2.2007, 19:21 | ||
только указания времени, по-моему, и не хватает
|
| Автор: Veve 12.2.2007, 19:31 |
| Не совсем!!!! Не хватает нулевых тараканчиков. Мне нужен отчёт за каждый час даже когда тараканчиков не убивали! с 2009-01-09 13:00:00 до 14:00:00 убито 2 тараканчика с 2009-01-09 14:00:00 до 15:00:00 убито 0 тараканчиков с 2009-01-09 15:00:00 до 16:00:00 убито 0 тараканчиков с 2009-01-09 16:00:00 до 17:00:00 убито 1 тараканчик[/B] |
| Автор: skyboy 12.2.2007, 19:47 |
| а хранимые процедуры СУБД поддерживаются? может, есть таблица, в которой зачем - то хранятся записи о каждом часе, для которого надо произвести рассчет? ведь СУБД не имеет понятия о "каждом часе"... или статистика - только за последние сутки приводится? |
| Автор: muzer 12.2.2007, 19:51 | ||
| Ой, извиняйте. Не внимателен был. В Oracle можно было бы с dual придумать. А здесь приходит на ум мысль создать таблицу с 24 часами, по ней генерить необходиые времена, и джойнить это дело через LEFT JOIN с таблицей данных. Например, таблица с часами Hours, одно поле value (24 строки, от 0 до 23)
Добавлено @ 19:52 Соответсвенно в примере не ограничивал по времени, сами сделаете думаю Ну и можно ещё покумекать, как уйти от ограниченности 24мя часами. Добавлено @ 19:57 И снова я Подумал, что вы вряд ли совсем уж маньяк, и запаса в 10 тысяч часов вам хватит, поэтому делаем Hours из 10 тысяч строк, а дальше в подзапросе обычным лимитом ограничиваем кол-во часов, на которое нам нужно оторваться от стартовой даты. |