SQL - Printable Version +- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net) +-- Forum: Общие Форумы (/forumdisplay.php?fid=100) +--- Forum: Разговоры обо всём (/forumdisplay.php?fid=105) +--- Thread: SQL (/showthread.php?tid=6353) |
SQL - Дьякон - 03.09.2021 21:00 Знаю, что мои темы на фоне остальных )))) Но просто тут душевная обстановка. Тут проще, чем на профильных форумах. Вдруг и спецы в SQL найдутся. В общем вопрос. Есть таблица в которой есть дата (DATETIME в формате TTimeStamp) и значение (VALUE integer). Каждые сутки в таблицу добавляется 24 записи (по одной записи каждый час ровно в начале часа, т.е. дата имеет формат dd.mm.yyyy hh:00). Каждому значению даты соответствует свое значение VALUE. Необходимо для заданного промежутка времени (например с 8:00 до 11:00) в каждом дне выбрать минимальное значение VALUE, и если вдруг таких значений несколько, то оставить одно, которое встречается первым Для одного дня проблем нет. Можно конечно в цикле пройтись по всем дням и через UNION сделать один большой запрос. Но что-то мне подсказывает, что есть другой способ . Потому что при выборке в 100к записей делать запрос на 1000к строк такое себе мероприятие. Спасибо заранее, если найдется ответ. RE: SQL - Bes - 08.09.2021 00:55 BJ Wrote:По-любому есть функция minimum через неё выбираешь тот самый минимум за каждый день и вставляешь через insert куда-нибудь в новую таблицу RE: SQL - Berserker - 08.09.2021 02:06 Code: SELECT date(event_date) as the_day, min(value) as min_value FROM `events` WHERE hour(event_date) BETWEEN 8 and 11 GROUP BY the_day |