我有两个这样的表-
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中执行此操作?我在pyspark中使用SQL查询。
MySQL 8.x的示例。
将其作为第二张表的更新有点棘手。这是一种解决方案: