Я написал запрос для проверки простой линейной регрессии, чтобы получить линию наилучшего соответствия между двумя наборами весовых мер. Надеемся, что он вернет результаты, как показано ниже, но выдает странную ошибку
'ORA-00907 Отсутствует правильная скобка'
и TOAD указывает на ту часть, где написано:
case ( when trn.wid_location = 28.3 then
Я расчесывал его из-за отсутствия скобок, но я не думаю, что это проблема, потому что если я заменю оператор case на
100 as mine,
ошибка исчезает и запрос выполняется.
Есть мысли?
Приветствия
Tommy
select
decode(wid_location,28.3,'CL',29.6,'DA') as site,
(n*sum_xy - sum_x*sum_y)/(n*sum_x_sq - sum_x*sum_x) as m,
(sum_y - ((n*sum_xy - sum_x*sum_y)/(n*sum_x_sq - sum_x*sum_x))*sum_x)/n as b
from (
select
wid_location,
sum(wids) as sum_x,
sum(mine) as sum_y,
sum(wids*mine) as sum_xy,
sum(wids*wids) as sum_x_sq,
count(*) as n
from (
select
trn.wid_location,
con.empty_weight_total as wids,
case (
when trn.wid_location = 28.3 then con.empty_weight_total*0.900-1.0
when trn.wid_location = 29.6 then con.empty_weight_total*0.950-1.5
end
) as mine
from widsys.train trn
inner join widsys.consist con
using (train_record_id)
where mine_code = 'YA'
and to_char(trn.wid_date,'IYYY') = 2009
and to_char(trn.wid_date,'IW') = 29
)
group by wid_location
)
А вот результаты, которые я был бы рад видеть
-- +----------+--------+----------+
-- | SITE | M | B |
-- +----------+--------+----------+
-- | CL | 0.900 | -1.0 |
-- +----------+--------+----------+
-- | DA | 0.950 | -1.5 |
-- +----------+--------+----------+