将多个公式插入到sql列中

时间:2015-01-27 18:44:11

标签: python sql database sqlite

我有一个关于使用sql将多个公式插入数据表的问题。

我有一个大数据表,表格g。 g的某些列是

    id1       id2      xyz
******************************
    123       456       4
    123       123       1
    789       456       5
    456       123       2
    123       789       4

我使用这些命令创建了另一个表,占位符

CREATE TABLE placeholder(id, count, sum_1, sum_2)

接下来,我试图将数据插入占位符并遇到问题。

“占位符”中的变量“id”可以匹配id1 id2中既不匹配,也不匹配一个或两个。我已正确编码count变量,但我正在努力使用公式将数据插入sum_1和sum_2。

sum_1必须是xyz的总和,按id1

分组

sum_2必须是xyz的总和,按ID2

分组

我正在尝试使用此代码将数据插入占位符

INSERT INTO placeholder 
SELECT 
id1, 
COUNT(*) AS 'num' FROM g GROUP BY id1, 
SUM(xyz) AS 'num' FROM g GROUP BY id1,
SUM(xyz) AS 'num' FROM g GROUP BY id2

前两行有效,但最后两行(用SUM开头)不起作用。我一直收到错误 OperationalError: near "SELECT": syntax error

如何计算条件和并将它们插入表格?

编辑:


以下是我希望占位符在我的陈述之后的样子。

    id         count        sum_1         sum_2
*******************************************************
    123          3            9             3
    456          1            2             9
    789          1            5             4

这些值对应于表格g中的总和值

1 个答案:

答案 0 :(得分:1)

您可以通过聚合和union all获得所需内容:

select id, max(cnt) as cnt, sum(sum_1) as sum_1, sum(sum_2) as sum_2
from (select id1 as id, count(*) as cnt, sum(xyz) as sum_1, null as sum_2
      from g
      group by id1
      union all
      select id2, NULL as cnt, NULL as sum_1, sum(xyz) as sum_2
      from g
      group by id1
     ) gg
group by id;