3,487
社区成员




select name, rq, max_sj - min_sj as sj
from (select name,
trunc(rq) as rq,
first_value(sj) over(partition by name order by rq) as min_sj,
last_value(sj) over(partition by name order by rq ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) as max_sj
from test
);
select name, rq, max_sj - min_sj as sj
from (select name,
trunc(rq) as rq,
first_value(sj) over(partition by name order by rq) as min_sj,
first_value(sj) over(partition by name order by rq desc) as max_sj
from test);
select distinct(name), rq, max_sj - min_sj as sj
from (select name,
trunc(rq) as rq,
first_value(sj) over(partition by name order by rq) as min_sj,
first_value(sj) over(partition by name order by rq desc) as max_sj
from test_wx);
select t2.name,
t2.rq,
(select tmax.sj from test tmax
where tmax.name = t2.name
and tmax.rq = t2.max_time) -
(select tmin.sj from test tmin
where tmin.name = t2.name
and tmin.rq = t2.min_time)
from (select t.name,
trunc(t.rq) rq,
max(t.rq) max_time,
min(t.rq) min_time
from test t
group by t.name, trunc(t.rq)) t2