Всем привет! Прошу помощи с запросом в SQlite3 из Python!

Рейтинг: 2Ответов: 2Опубликовано: 13.06.2023

Есть БД всего с четырьмя полями:

(d_t timestamp PRYMARY KEY, h_p INT, l_p INT, p_u INT)

В БД записываются результаты измерений - минимум одно в сутки, максимум - 10; далее выводятся на график. Все это я сделал, работает нормально. Теперь возникла задача строить ещё один график со средними значениями трёх полей измерений за день. Сейчас я смог это сделать очень "кривым" способом - выборкой всех дат и сравнением даты и времени во вложенных циклах, определением количества измерений в сутки и далее выборкой измерений и их усреднением. Думаю, что должен быть способ просто через запрос, но с datetime никак не могу справится. Как можно выбрать данные за первый день, усреднить их, потом за следующий и тд. В результате хочется получить четыре списка - дату (без часов и минут) и средние результаты за день. Буду очень благодарен за помощь!!

Ответы

▲ 1Принят

Группируете по дате, конвертируя поле d_t при помощи функции DATE и используете агрегирующие функции AVG для полей для получения средних значений и COUNT для получения количества измерений на протяжении дня:

select date(d_t) d, count(*) cc, avg(h_p), avg(l_p), avg(p_u)
from tbl
group by date(d_t)
order by d

Онлайн демо

▲ -1

Как можно выбрать данные за первый день

select * from <Имя Вашей таблицы> where d_t > <Начало суток> and d_t < <Конец суток>