0
是否可以在Vertica中的某些列上使用HAVING子句? 寻找最有效的方式,因为我正在处理数百万行。Vertica - 仅在某些列上使用HAVING进行筛选结果
这里是什么,我试图做一个例子: 鉴于表t:
A | B | number
--+---+-------
a | c | 1
a | c | 2
a | d | 1
b | e | 1
b | e | 1
c | c | 1
如果我运行:
SELECT A, B, sum(number) as total
FROM t
GROUP BY 1, 2
HAVING sum(number) >= 2
我会得到:
A | B | total
--+---+------
a | c | 3
b | e | 2
我想以某种方式能够将HAVING条件应用于列A,而不是(A,B)组合,以便我的结果真的会:
A | B | total
--+---+------
a | c | 3
a | d | 1
b | e | 2
想我可以像下面这样做:
SELECT A, B, sum(number) as total
FROM t
WHERE A IN (
SELECT A
FROM t
GROUP BY 1
HAVING sum(number) >= 2
)
GROUP BY 1, 2
但有一个更好的办法?
你必须解释什么是'适用于HAVING条件只是列A'你的第二个例子返回'a | d | 1'那么这与'HAVING(a)> 2'有什么关系?' –
对不起,迟到的回应。原因'a | d | 1'出现是因为'HAVING'只适用于A列,所以a的总数是'1 + 2 + 1 = 4',所以任何参与它的东西都应该出现('a | c'和'a | e')。感谢您的热心帮助。 –