我有一个像这样的数据集
A | B | C | D | E
-----------------------------------------------
1 | Carrot | <null> | a | 111
2 | Carrot | <null> | b | 222
3 | Carrot | zzz | c | 333
4 | Banana | <null> | a | 444
5 | Banana | <null> | b | 555
6 | Banana | <null> | c | 666
7 | Grape | <null> | a | 777
8 | Grape | <null> | b | 888
9 | Grape | zzz | c | 999
10 | Carrot | <null> | a | 000
11 | Carrot | <null> | b | AAA
12 | Carrot | zzz | c | BBB
现在我要做的是总结E的值,其中D的值为b,但仅适用于B中C值为zzz的那些元素。所以在上面的例子中我看的是值222,888和AAA,但我对555不感兴趣。
我可以通过分组和基于值B的总和来解决这个问题,但我想做的是基于C的总和。
我的代码看起来像这样
select B,
(select sum(E) as duty_payable
from table table_alias_b
where D = "b"
and table_alias_b.B = table_alias_a.B )
from table table_alias_a
where table_alias_b.B in (select B
from table
where (C = 'zzz'))
group by B
或类似的东西(三个表中也有连接......)
这完全可以理解吗?
答案 0 :(得分:1)
除非我遗漏了什么,否则这应该是你想要的:
SELECT t.b_column,
SUM(t.e_column)
FROM TABLE t
WHERE t.d_column = 'b'
AND t.c_column = 'zzz'
GROUP BY t.b_column