Ms-Access
使用 MS Access SQL 填充總欄位的百分比
我正在嘗試使用 SQL 查詢填充一個欄位,該欄位
F
的百分比佔某個欄位的總數,使得欄位f
中的每條記錄由以下公式給出:F(i)``F
F(i) = f(i)/SUM_i(f(i))
f
和和兩個欄位都F
位於一個表中MyTable
。然而,我正在努力開發一個能夠做到這一點的查詢。我的嘗試是:
INSERT INTO MyTable (F) SELECT f/MyField.fSum FROM MyTable, (SELECT SUM(f) AS fSum FROM MyTable) AS MyField
但是這段程式碼在 table 中插入了新行
MyTable
。我不知道如何從這裡開始,因為我的理解是該UPDATE
語句非常有限,並且對這樣做沒有用處。關於如何以最簡單的形式做到這一點的任何想法?
我剛剛呼叫了這些列
f
,F
為了說明目的,這裡並不是它們在實際數據庫中的命名方式。
你需要
UPDATE
,而不是INSERT
:UPDATE MyTable SET F = f / (SELECT SUM(f) AS fSum FROM MyTable) ;
要麼:
UPDATE MyTable AS my, (SELECT SUM(f) AS fSum FROM MyTable) AS total SET my.F = my.f / total.fSum ;
正如 mendosi 評論的那樣,在不同的(大寫/小寫)大小寫中擁有兩個具有相同名稱的列,就像在任何 DBMS
f
中F
都不推薦,並且(不確定)甚至可能不允許在 Access 中使用。但是,上述語句在 2013 版中不起作用。我認為它們在舊(1997 年)版本中起作用,但 Jet 引擎(3.5?4.0?)中的一些變化使查詢引發錯誤。
使用該
DSUM()
函式來進行求和,可以:UPDATE MyTable SET F = f / DSUM("f", "MyTable") ;