使用以前的值计算表中的行的值

问题描述 投票:0回答:2

我有两个这样的表-

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查询。

sql apache-spark-sql pyspark-sql
2个回答
1
投票

MySQL 8.x的示例。


0
投票

将其作为第二张表的更新有点棘手。这是一种解决方案:

© www.soinside.com 2019 - 2024. All rights reserved.