SQL 对一个 table 中的列求和,其中另一个 table 中的值是 'S'

SQL sum column in one table where value in another table is 'S'

我有 2 个 table:

[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

如果 'rolls'.'zone' 具有 'S' 类型(根据 table 'zones')

输出应该是 2016 (1008+1008)

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.

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

通过使用 JOIN 我们正在寻找 滚动 table 区域的数据table 有并且通过使用 ON 我们限制查找它们有共同列的数据。这里的目标是组合这些 tables。这样就会发生:

[[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

使用 where 我们将进一步细分我们的查询以仅查找类型为 S 的记录。所以现在您正在查看:

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

更进一步,您会寻找这张唱片并自言自语。我只想要 poid 的总和。那么你使用 SELECT SUM(rolls.poids) 最终结果是:

[sum(rolls.poids)]
   2016