с использованием MSQL 2005
У меня есть непрерывный набор измерений потока (усредненный для каждого 15-минутного интервала времени)
Я пытаюсь написать запрос, чтобы найти минимальный поток для каждого дняи время, когда это происходит. Найти минимальный поток легко, но получить время сложнее.
В настоящее время я делаю это:
select d1.data_point_groupid
, min(d1.timeID) [timeId]
, min(d1.[value]) [value]
from dma.dbo.calculated_average_group_flow d1
where night=1 and round(d1.value, 6)=
(
select round(min(value), 6)
from dma.dbo.calculated_average_group_flow d2
where night=1
and d2.[date]=d1.[date]
and d2.data_point_groupid=d1.data_point_groupid
)
group by d1.data_point_groupid, d1.date
Однако иногда это не совпадает из-за ошибок округления
Я также пытался использовать ранжирование, но это так медленно, что мне пришлось отменить запрос
select [data_Point_GroupID], [date], [timeId], [value] from
(
select * , Rank() over (Partition BY data_Point_GroupID, [date] order by value ASC) as Rank
from
[calculated_average_group_flow] d2
) d1
WHERE rank=1
Calculated_average_group_flow - это другое представление, которое выполняет вычисления усреднения
Есть ли лучшеспособ сделать это?