Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помощь по SQL запросу (по времени).

alex sort Знаток (364), на голосовании 1 год назад
Помогите плиз с запросом задача такая есть табличные (таблица неполная для примера так значений очень много) данные по времени- нужно сгруппировать по времени точнее каждые 4 (например 48,49,50,51-) секунды (вроде контейнеров) и из каждой (группы) контейнера оставить только максимальное значение. Из повторов например 48, 48, 48,49,50,51 также выбрать только макс одно значение. И можно ли если будут большие пустоты т.е пропуски по времени убрать пустоты или как-то заполнить усредненными значениями предыдущих соседних измерений. Спасибо огромное если кто откликнется, буду благодарен за помощь, т.к пока еще осваиваю SQL. Заранее спасибо и с Уважением от меня!!!
Date Time Level
09.11.2022 11:28:48 -54.2
09.11.2022 11:28:48 -76.2
09.11.2022 11:28:48 -81
09.11.2022 11:28:48 -82
09.11.2022 11:28:48 -82.1
09.11.2022 11:28:48 -100.4
09.11.2022 11:28:52 -54.5
09.11.2022 11:28:52 -77.3
09.11.2022 11:28:52 -80.1
09.11.2022 11:28:52 -82.2
09.11.2022 11:28:52 -83.4
09.11.2022 11:28:52 -103.3
09.11.2022 11:28:56 -53.2
09.11.2022 11:28:56 -77.7
09.11.2022 11:28:56 -79.7
09.11.2022 11:28:56 -81.8
09.11.2022 11:28:56 -84.2
09.11.2022 11:28:56 -101.5
09.11.2022 11:28:58 -53.4
09.11.2022 11:28:58 -78.6
Голосование за лучший ответ
G Мыслитель (5876) 1 год назад
Группировать можно, это SQL умеет. Но как это делать, не совсем понятно по описанию.
Каждые какие 4 секунды?
Из повторов чего именно нужно выбрать максимальное значение?
Максимальное значение чего - из того же поля или другого?
А усреднять по каким-то интервалам - это можно попробовать сделать на SQL, но процесс больше будет похож на пытки, чем на создание.

Но если задумана группировка по дате и времени с выбором максимального уровня, то нужно нечто такое:
SELECT "Date", "Time", Level
FROM tablename t
GROUP BY "Date", "Time" HAVING Level = (SELECT MAX(Level) FROM tablename t1 WHERE t1.Date = t.Date and t.Time = t1.Time)
Диалект SQL не указан, так что с оборачиванием имён полей, похожих на ключевые слова, самостоятельно.
alex sortЗнаток (364) 1 год назад
G спасибо огромное за ответ сейчас буду пробовать реализовать.
Кратко отвечу:
Каждые какие 4 секунды? Ответ-нужен интервал все что собрано за каждые последовательные 4 секунды из таблицы т.к процесс измерения идет каждую секунду.
Из повторов чего именно нужно выбрать максимальное значение? выбрать нужно максимальное значение измеренное из интервала за 4 секунды т.е было 4 измерения нужно макс значение.
Максимальное значение чего - из того же поля или другого? максимальное значение из колонки LEVEL.
Извиняюсь если трудно объясняю но поймите и простите)
И спасибо еще раз!!!
Похожие вопросы