首页 文章

将多个公式插入到sql列中

提问于
浏览
0

我有一个关于使用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)

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

'placeholder'中的变量'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 回答

  • 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;
    

相关问题