У меня такая проблема:
Такая структура таблицы
DateAndTime ruda water dev_num
11.07.2008 8:10:08 24,08223 38,35447 4
где dev_num - номер бригады.
Данные пишутся с интервалом в 5 минут, необходимо посчитать среднее значения ruda и water за каждую смену. С дневной сменой все просто, т.к. она приходится на одно число, а вот ночная на 2.
Результат за ночную смену разбивается на 2е строки, а нужно на 1у смену 1 результат.
Использую такой запрос
- Код: Выделить всё
SELECT AVG(ruda_cur) AS ruda_cur, AVG(water) AS water, dev_num
FROM (SELECT *
FROM table
WHERE (DateAndTime >= CONVERT(DATETIME, '2008-07-01', 102)) AND (DateAndTime <= CONVERT(DATETIME, '2008-07-07 23:59:59', 102))) dt
WHERE (RIGHT(DateAndTime, <= CONVERT(DATETIME, '23:59:59', 102)) AND (RIGHT(DateAndTime, > CONVERT(DATETIME, '19:30:00', 102)) OR (RIGHT(DateAndTime, < CONVERT(DATETIME, '7:30:00', 102)) AND (RIGHT(DateAndTime, >= CONVERT(DATETIME, '00:00:00', 102))
GROUP BY dev_num, DATEPART(d,DateAndTime)
Понятно, что такой запрос выведет 2 строки за ночную смену, т.к. группирую по дню, а как реализовать группировку за 2 дня?
Или я изначально иду не в том направлении?