簡體   English   中英

用計算值更新列

[英]Update a column with a calculated value

這是我使用的表:

+-------------+----------+---------------------+
| sourceindex | source   | pa                  |
+-------------+----------+---------------------+
|           0 | this     | 0.13842974556609988 |
|           1 | is       | 0.26446279883384705 |
|           2 | a        | 0.26446279883384705 |
|           3 | book     | 0.13842974556609988 |
|           4 | ,        | 0.26446279883384705 |
|           5 | that     | 0.13842974556609988 |

我想添加一列,將其結果作為log(sum(pa))/pa

關於如何做到這一點的任何建議?

您可以使用交叉聯接來計算log(sum(pa)) ,在外部可以將結果除以pa colum的每個值

update
test t
join (select
`sourceindex`, `source`, `pa` , log_sum/pa new_col
from
test 
cross join (select log(sum(pa)) log_sum
from test ) a
) t1
on (t.sourceindex= t1.sourceindex
   and t.source = t1.source
    and t.pa = t1.pa
   )
set t.new_col = t1.new_col

Demo

但是如果您切換邏輯以使用選擇查詢顯示您的計算會更好

select `sourceindex`, `source`, `pa` , log_sum/pa new_col
from
test 
cross join (select log(sum(pa)) log_sum
from test ) t

Demo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM