我想从ITEMS TABLE
中检索Price Column
的总和,并将其与GOODS TABLE
连接。问题是当我尝试连接这些表时,货物表中的数量列gQnty
的总和为DISH A
给出了84
而不是14
。谁能帮助我如何实现这个任务,我可以得到确切的数量gQnty
和价格iPrice
与相同的查询。
表货物
gID | gName | gQnty
-------------------------
1 DISH A 10
2 DISH B 12
3 DISH A 4
表项目:
iID | gID | iItem | iPrice
--------------------------
1 1 Sugar 200
2 1 Milk 300
3 1 Fruits 100
4 2 Oil 200
5 3 Sugar 100
6 3 Milk 50
7 3 Fruits 40
我查询:
select g.gName, sum(g.gQnty)[gQnty], sum(i.iPrice)[iPrice]
from goods g join items i
on g.gID = i.gID
group by g.gName
预期结果:
gName | gQnty | iPrice
----------------------------
DISH A | 14 | 790
DISH B | 12 | 100
左连接是个好主意
WITH A AS (
SELECT gName, SUM(ITEMS.iPrice) AS iPrice
FROM GOODS
LEFT JOIN ITEMS
ON GOODS.gID = ITEMS.gID
GROUP BY gName
)
SELECT gName,
(SELECT SUM(gQnty) FROM GOODS WHERE GOODS.gName = A.gName GROUP BY gName ) AS gQnty,
iPrice
FROM A
dbfiddle
试试这个
select g.gName, max(g.gQnty)[gQnty], sum(i.iPrice)[iPrice]
from goods g join items i
on g.gID = i.gID
group by g.gName
或者
select g.gName, avg(g.gQnty)[gQnty], sum(i.iPrice)[iPrice]
from goods g join items i
on g.gID = i.gID
group by g.gName