SQLite条件SUM

时间:2017-08-23 06:11:52

标签: python python-2.7 sqlite

我想如何在SQLite中创建条件SUM。我创建了这个例子:

SQL ACTION之前的表

   ID1   ID2   Value   TOTAL
-------------------------------
    1                   None
          1     7.00    None
          1     1.00    None
          1     1.00    None
          1     3.00    None
          1     2.00    None
    2                   None
          2     5.00    None
          2     1.00    None
    3                   None
          3     7.00    None
          3     1.00    None
          3     1.00    None
          3     3.00    None

上表是尚未修改的数据。如果ID1 = ID2,我想得到值的总和,并将结果发布到' TOTAL'列。

SQL操作后的表

   ID1   ID2   Value   TOTAL
-------------------------------
    1                   14.00
          1     7.00    None
          1     1.00    None
          1     1.00    None
          1     3.00    None
          1     2.00    None
    2                   6.00
          2     5.00    None
          2     1.00    None
    3                   12.00
          3     7.00    None
          3     1.00    None
          3     1.00    None
          3     3.00    None

我试过这个没有成功:

curOperations.execute('UPDATE TABLE1 SET TOTAL = 
(SELECT SUM(CASE WHEN ID1 = ID2 THEN Value ELSE 0 END) as Value FROM TABLE1)')

修改

所以我找到了一种很容易获得SUM的方法:

SELECT ID2, SUM(Value) FROM Table GROUP BY ID2

我得到了这张表:

   ID2   SUM(Value)
------------------------
    1       14.00
    2       6.00
    3       12.00

我现在唯一要做的就是将这些值传递给' main'表

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您必须使用带子查询的更新 - 唯一棘手的部分是别名必须位于子查询上:

curOperations.execute('''UPDATE table1 SET total = (SELECT SUM(value)
    FROM table1 int
    WHERE int.id2 = table1.id1)
    WHERE id1 IS NOT NULL''')