는이 같은 창 기능을 사용하려면이 두 가지 새로운 변수를 추가하고 무엇
select t.DateLogged, min(t.Temperature), max(t.Temperature), avg(t.Temperature),
max(case when t.seqnum_asc = 1 then t.Temperature end) as FirstTemperature,
max(case when t.seqnum_desc = 1 then t.Temperature end) as LastTemperature,
from (select t.*,
row_number() over (partition by dateLogged order by timeLogged) as seqnum_asc,
row_number() over (partition by dateLogged order by timeLogged desc) as seqnum_desc
from t
) t
group by t.DateLogged
order by DateLogged
. 첫 번째 값 (seqnum_asc
)으로 1에서 시작하는 값을 열거합니다. 다른 열거 형은 1 for the last reading (
seqnum_desc`입니다.
값을 얻으려면 조건부 합계가 사용됩니다. 당신이 좋아하는 경우
, 당신은 실제로 row_number()
보다는, 윈도우 fucnctions로 min()
및 max()
를 사용하여 거의 같은 일을 수행 할 수 있습니다
select t.DateLogged, min(t.Temperature), max(t.Temperature), avg(t.Temperature),
max(case when timeLogged = mintime then t.Temperature end) as FirstTemperature,
max(case when timeLogged = maxtime then t.Temperature end) as LastTemperature,
from (select t.*,
min(timeLogged) over (partition by dateLogged) as minTime,
max(timeLogged) over (partition by dateLogged) as maxTime
from t
) t
group by t.DateLogged
order by DateLogged