在同一个SQL查询中运行正常拉和求和()
问题描述:
我正在寻找运行以下两个查询作为单个查询,并在如何这样做是在一个损失。此(1行DATA1,DATA2的,每个ID DATA3):在同一个SQL查询中运行正常拉和求和()
SELECT
ID
DATA1
DATA2
DATA3
FROM TABLE1
而这个(DATA 4的多个行和每ID DATA5):
SELECT
TABLE1.ID
SUM(TABLE2.DATA4)
SUM(TABLE2.DATA5)
FROM TABLE1
JOIN TABLE2
ON TABLE2.ID = TABLE1.ID
GROUP BY ID;
要在输出是一个单一的表(100k〜行)与列:ID,DATA1,DATA2,DATA3,SUM(DATA4),SUM(DATA5)。
这可能吗?试图使用UNION,它说我需要每个查询相同的表达式,这是有道理的。中级SQL用户,所以我不知道还有什么可以抛弃它。
谢谢!
答
您可以添加额外的列到select
和group by
:
SELECT t1.ID, t1.DATA1, t1.DATA2, t1.DATA3,
SUM(t2.DATA4), SUM(t2.DATA5)
FROM TABLE1 t1 JOIN
TABLE2 t2
ON t2.ID = t1.ID
GROUP BY t1.ID, t1.DATA1, t1.DATA2, t1.DATA3;
答
如果想只在ID分组的总和,可以执行总和作为子选择,并加入它放回主查询:
SELECT t1.ID, t1.DATA1, t1.DATA2, T1.DATA3, ss.TOT_DATA4, ss.TOT_DATA5
FROM TABLE1 t1
INNER JOIN (SELECT ID, SUM(DATA4) AS TOT_DATA4, SUM(DATA5) AS TOT_DATA5
FROM TABLE1
GROUP BY ID) ss
ON ss.ID = t1.ID
完成这样你会得到SUM_DATA4和SUM_DATA5相同的值,如果ID每个值,无论DATA1,DATA2,DATA3和价值观。
祝你好运。