一个表中的SQL sum列,其中另一个表中的值为'S'

问题描述 投票:0回答:2

我有2张桌子:

[rolls]
tappi zone poids
N1001 101 502
N1002 102 502
N1003 103 1008
N1004 104 1008

[zones]
nom  type
101   P
102   P
103   S
104   S

我想要做的是总和'roll'。'poids'如果'roll'。'zone'有'S'类型(根据表'zone')

输出应为2016年(1008 + 1008)

sql informix
2个回答
1
投票
SELECT SUM(t1.poids)
FROM rolls t1
INNER JOIN zones t2
    ON t1.zone = t2.nom
WHERE t2.type = 'S'

我们可以安全地在这里做一个INNER JOIN,因为如果来自rolls的记录与zones中的任何内容不匹配,那么我们知道它不能是区域类型S


1
投票

SELECT SUM(rolls.poids)FROM roll JOIN区域ON rolls.zone = zones.nom WHERE zones.types ='S';

通过使用JOIN,我们正在查找roll表和区域表所具有的数据,并且通过使用ON,我们限制查找具有共同列的数据。这里的目标是组合这些表。这样就会发生:

[[rolls] JOINED [zones]]
tappi zone poids nom type
N1001 101 502    101 P
N1002 102 502    102 P
N1003 103 1008   103 S
N1004 104 1008   104 S

使用我们将更多分段查询的地方仅查找类型为S的记录。所以现在您正在查看:

[[rolls] JOINED [zones]]
tappi zone poids nom type
N1003 103 1008   103 S
N1004 104 1008   104 S

更进一步,你会寻找这个记录并对自己说。我只是想要这些poids的总和。那么你使用SELECT SUM(rolls.poids),最终的结果是:

[sum(rolls.poids)]
   2016
© www.soinside.com 2019 - 2024. All rights reserved.