不同表的列之间的SQLite算法

时间:2014-04-21 18:41:45

标签: sqlite operations

我有这样的陈述:

SELECT f.column1, 0.9*sum(s.column2) FROM first f, second s WHERE f.colum1 = f.column1*0.9*sum(s.colum2)

基本上我想做的是将“' first' column1中的表,由0.9 * sum(s.colum2)表示,即第二个表的column2中的值之和乘以0.9。

我自己测试了总和* 0.9部分并且它有效但在WHERE条件之后它不起作用。谁能告诉我这样做的正确方法?现在我得到的错误是:

could not prepare statement (1 misuse of aggregate: sum())

2 个答案:

答案 0 :(得分:1)

您的答案可能是使用HAVING代替WHERE

WITH f AS (SELECT 12 AS column1 FROM dual),
     s AS (SELECT 33 AS column2 FROM dual)
SELECT f.column1, 0.9*SUM(s.column2) FROM f,s
HAVING f.column1 = f.column1*0.9*SUM(s.column2);

但是声明WHERE f.colum1 = f.column1*0.9*sum(s.colum2)的想法是什么?

它比较第一个colunm中行的值,并将它们与相同的值乘以0.9*SUM(s.colum2)进行比较。因此,如果0.9*SUM(s.colum2) != 1 0.9*SUM(s.colum2) == 1所有行,则查询将不返回任何内容。

答案 1 :(得分:0)

我最终想出来,如果有人有兴趣,我将代码更改为:

SELECT f.column1*0.9*sum(s.column2) FROM first f, second s

我没有在WHERE条件中进行列间运算,而是在SELECT关键字后列出列名时简单地完成了它,并且工作正常