Current time: 13.04.2024, 19:54 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
SQL
Author Message
Дьякон Offline

Posts: 392
Post: #1

Знаю, что мои темы на фоне остальных )))) Но просто тут душевная обстановка. Тут проще, чем на профильных форумах. Вдруг и спецы в SQL найдутся.
В общем вопрос.

Есть таблица в которой есть дата (DATETIME в формате TTimeStamp) и значение (VALUE integer). Каждые сутки в таблицу добавляется 24 записи (по одной записи каждый час ровно в начале часа, т.е. дата имеет формат dd.mm.yyyy hh:00). Каждому значению даты соответствует свое значение VALUE. Необходимо для заданного промежутка времени (например с 8:00 до 11:00) в каждом дне выбрать минимальное значение VALUE, и если вдруг таких значений несколько, то оставить одно, которое встречается первым

Для одного дня проблем нет. Можно конечно в цикле пройтись по всем дням и через UNION сделать один большой запрос. Но что-то мне подсказывает, что есть другой способ 96. Потому что при выборке в 100к записей делать запрос на 1000к строк такое себе мероприятие.

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


Страус труп (с) Бьерн
03.09.2021 21:00
Find all posts by this user Quote this message in a reply
Bes Offline

Posts: 5422
Post: #2

BJ Wrote:По-любому есть функция minimum 102 через неё выбираешь тот самый минимум за каждый день и вставляешь через insert куда-нибудь в новую таблицу 102
08.09.2021 00:55
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16471
Post: #3

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


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
08.09.2021 02:06
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2024 MyBB Group