繁体   English   中英

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

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

我有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

我想做的是如果'rolls..zone'具有类型'S'(根据表'zones')的总和'rolls'。'poids'

输出应为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

从卷中选择SUM(rolls.poids)JOIN在rolls.zone = zone.nom WHERE zone.types ='S'上的区域;

通过使用JOIN,我们正在寻找rolls表zones表具有的数据,而通过使用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

使用where可以细分更多的查询,以仅查找类型为S的记录。 所以现在您正在看:

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

甚至更进一步,您将寻找该记录并对自己说。 我只想要总和。 因此,您使用一个SELECT SUM(rolls.poids) ,最终结果是:

[sum(rolls.poids)]
   2016

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM