Я вычислил наклон и точку пересечения для двух столбцов в таблице:

select regr_slope(x, y) slope, regr_intercept(x, y) intercept
from table

Теперь я хочу умножить столбцы x на наклон и добавить точку пересечения, например:

select x, y, slope * x + intercept as y_fit 
from table

Как я могу добиться этого одним запросом?

0
Antonio 11 Фев 2021 в 22:46

2 ответа

Лучший ответ

Вы можете использовать оконные функции:

select x, y,
      regr_slope(x, y) over () * x + regr_intercept(x, y) over () as y_fit 
from table
1
Gordon Linoff 11 Фев 2021 в 19:49

Я бы, наверное, использовал подзапрос и присоединился к нему.

select x, y, (subq.slope * x + subq.intercept) y_fit 
from table,
     (select regr_slope(x, y) as slope, regr_intercept(x,y) as intercept 
     from table) subq;

Обратите внимание, что subq необходимо, потому что подзапросы, как правило, нуждаются в псевдонимах.

Я предполагаю, что regr_slope и regr_intercept являются функциями агрегирования, иначе почему бы вам просто не встроить и не выполнить select x, y, regr_slope(x,y) * x + regr_intercept(x,y) from table.

По сути, вы выполняете полное декартово соединение исходной таблицы с результатом агрегирования в одну строку.

1
wangd 12 Фев 2021 в 00:22
66161767