SQL 交叉联接在没有分组依据的情况下使用最大值进行计算
SQL Cross join to use max value for calculation in a case statement without group by
我有以下 table:
|BoreholeID|Mins|
-----------------
|BH1 |0.5 |
|BH1 |1 |
|BH1 |1.5 |
我想 select 第三列称为时间轴,它有一个案例语句 returns 如果分钟值大于最大分钟值的 80% 并且如果mins 值大于 max mins 值减去 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
;
我过去曾使用交叉连接来使用这样的最大值并且没有问题,但是这个查询告诉我我需要对其他两个查询使用分组 selected 我不想做的领域。我怎样才能绕过使用分组依据?
我使用了嵌套 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
我有以下 table:
|BoreholeID|Mins|
-----------------
|BH1 |0.5 |
|BH1 |1 |
|BH1 |1.5 |
我想 select 第三列称为时间轴,它有一个案例语句 returns 如果分钟值大于最大分钟值的 80% 并且如果mins 值大于 max mins 值减去 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
;
我过去曾使用交叉连接来使用这样的最大值并且没有问题,但是这个查询告诉我我需要对其他两个查询使用分组 selected 我不想做的领域。我怎样才能绕过使用分组依据?
我使用了嵌套 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