2014-04-08 177 views
0

我想將公式導入SQL,但它給了我一個錯誤。以下是我的等式:在SQL中計算對數

CREATE TABLE INFORGAIN (WORD, DMS, NOTDMS, INFO_G) AS 
SELECT WORD, DMS, NOTDMS, D_FREQ FROM CONTIGENCY_T 
WHERE 
INFO_G=((D_FREQ/132299)*LOG(D_FREQ/132299))+(D_FREQ/132299)*((DMS/D_FREQ)*LOG(DMS/D_FREQ))+(NOTDMS/132299)*((9910-DMS)/D_FREQ*LOG((9910-DMS)/D_FREQ)); 

這裏是錯誤:Error at Command Line:9 Column:18 Error report: SQL Error: ORA-00920: invalid relational operator 00920. 00000 - "invalid relational operator"。 錯誤是SUM。謝謝。

+0

錯誤是不言自明的,你不能在where子句中求和,至少不是這樣,也許如果你包含了更多關於你想要達到什麼的信息,HAVING子句可能更合適。 –

+0

你想要做什麼?一般來說,除了集合函數外,你還可以使用'WHERE something = soemthingelse'。 – Mihai

+0

爲什麼關於完全不同的錯誤代碼和消息的標題? –

回答

1

由於where子句在聚合之前運行,因此不能在where子句中使用聚合函數。您可能會通過使用HAVING子句中的聚合函數來獲得相同的結果。

操作的sql語句的順序是:從 WHERE GROUP BY HAVING 選擇 ORDER BY。

這意味着您不能在WHERE子句中使用列別名,但可以按SELECT列別名的順序進行排序。聚合函數按部分進行分組。如果您不包含按語句組的語句,則sql會使用您的整個結果集,如 select count(*) from table 語句。因此可以在分組之後的任何語句中使用聚合函數。 HAVING,SELECT和ORDER BY都是公平的遊戲。

+0

我很新的SQL。通過說「聚合函數」,你的意思是「SUM」。剛注意到我不需要'SUM'。我更新了我的代碼,但仍然給我一個錯誤。我也嘗試以'(10)'或'[10]'的格式添加基地,但他們都沒有工作。 –

+0

通過聚合函數我的意思是在多行上運行的任何函數。總和,計數,最小值,最大值,平均值... – Vulcronos