Ms-Access

使用 MS Access SQL 填充總欄位的百分比

  • November 30, 2016

我正在嘗試使用 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語句非常有限,並且對這樣做沒有用處。

關於如何以最簡單的形式做到這一點的任何想法?

我剛剛呼叫了這些列fF為了說明目的,這裡並不是它們在實際數據庫中的命名方式。

你需要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 評論的那樣,在不同的(大寫/小寫)大小寫中擁有兩個具有相同名稱的列,就像在任何 DBMSfF都不推薦,並且(不確定)甚至可能不允許在 Access 中使用。


但是,上述語句在 2013 版中不起作用。我認為它們在舊(1997 年)版本中起作用,但 Jet 引擎(3.5?4.0?)中的一些變化使查詢引發錯誤。

使用該DSUM()函式來進行求和,可以:

UPDATE MyTable
SET F = f / DSUM("f", "MyTable") ;

引用自:https://dba.stackexchange.com/questions/156749