Wake of Gods Forum | Форум Во Имя Богов
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 сделать один большой запрос. Но что-то мне подсказывает, что есть другой способ 96. Потому что при выборке в 100к записей делать запрос на 1000к строк такое себе мероприятие.

Спасибо заранее, если найдется ответ.


RE: SQL - Bes - 08.09.2021 00:55

BJ Wrote:По-любому есть функция minimum 102 через неё выбираешь тот самый минимум за каждый день и вставляешь через insert куда-нибудь в новую таблицу 102



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