У меня есть две таблицы, которые структурированы следующим образом:
table 1
+---+---+
| id|val|
+---+---+
| 1|1.1|
| 2|1.2|
| 3|1.3|
| 4|1.4|
| 5|1.5|
| 6|1.6|
+---+---+
table2
+---+---+
| id|val|
+---+---+
| 7| 0|
| 8| 0|
| 9| 0|
+---+---+
Мне нужно написать запрос SQL, который вычисляет заполнение столбца val
в table2
, так что
val = prev_value^2 + prev_value^0.5
, где prev_value
- это просто значение столбца val
в предыдущей строке (id -1
). Таким образом, для первой строки в table2
значение val
должно быть
val = 1.6^2 + 1.6^0.5 = 3.82
Этот результат 3.82
будет использоваться для вычисления val
для строки с id == 8
в table2
и так далее.
Я попытался сделать следующее,
select df2.*
, power(df1.val, 2) + power(df1.val, 0.5) as sum_val
from df1, df2
where df1.id = df2.id - 1
, но это возвращает только одну строку
+---+---+------------------+
| id|val| sum_val|
+---+---+------------------+
| 7| 0|3.8249110640673525|
+---+---+------------------+
, которая является правильным выводом, но я ищу способ получить все строки в table2
вычисляются одновременно.
Есть ли способ сделать это в SQL? Я использую SQL запросов в pyspark.