我有下表:
|BoreholeID|Mins|
-----------------
|BH1 |0.5 |
|BH1 |1 |
|BH1 |1.5 |
并且我想选择一个称为时间轴的第三列,该列具有case语句,如果mins值大于最大mins值的80%,并且mins值大于max mins值minus,则返回case 1。 5.我要执行以下查询:
select boreholeid, mins,
(case when mins < (max(max_query.maxts)*0.8) and
mins<(max(max_query.maxts)-5) then 1 else 0 end) as Timeline
from maxrawcalcs
cross join
(select max(maxrawcalcs.mins) maxts from maxrawcalcs) as max_query
;
我过去使用过交叉联接来使用这样的最大值,但没有问题,但是此查询告诉我,我需要对其他两个所选字段使用按组查询,但我没有想做。我该如何使用分组方式?
答案 0 :(得分:0)
我使用了嵌套的SQL,并将您的逻辑保留如下:
select q.boreholeid, q.mins,
(case when q.mins > ((q.maxts)*0.8) and
q.mins > ((q.maxts)-5)
then 1 else 0
end ) as Timeline
from
(
select boreholeid, mins,
(select max(mins) maxts from maxrawcalcs) as maxts
from maxrawcalcs
) q;
boreholeid mins Timeline
BH1 0.5 0
BH1 1 0
BH1 1.5 1