我有一些类似的数据
=================================
COL A | COL B | COL C | VAL
=================================
5 | 6 | 3 | 2
2 | 6 | 3 | 3
5 | 6 | 3 | 4
5 | 6 | 1 | 5
我想做的是合计VAL列中的所有值,仅当该列具有Uniquq值组合时。
在上述情况下,总数为2+3+5=10第三行不计算在内,因为5 6 3的组合不是唯一的。
我已经尝试了GROUP BY COL A,COL B,COL C,这将导致
=================================
COL A | COL B | COL C | VAL
=================================
5 | 6 | 3 | 2
2 | 6 | 3 | 3
5 | 6 | 1 | 5
问题是我不知道如何得到它的总数。我试过用ROLLUP,不知怎么的,它会把桌子弄得一团糟。
感谢您的帮助。谢谢
如果组合不是唯一的,您会选择哪个值?请记住,SQL表表示无序的集合,因此不存在一行在另一行之前或之后的概念。
根据你的例子,以下工作:
select sum(val)
from (select a, b, c, min(val) as val
from t
group by a, b, c
) t;