我有一个关于使用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中的总和值
答案 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;