关于如何使用sql将多个公式插入数据表,我有一个问题。
我有一个大型数据表,表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
前两行工作,但最后两行(从和开始)不起作用。我一直得到错误的OperationalError: near "SELECT": syntax error
。
如何计算条件和并将它们插入到表中?
编辑:
这里是我希望占位符在我的声明之后的样子。
id count sum_1 sum_2
*******************************************************
123 3 9 3
456 1 2 9
789 1 5 4
这些值与表g中的总和相对应。
发布于 2015-01-27 11:16:27
您可以通过聚合和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;
https://stackoverflow.com/questions/28177724
复制相似问题