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
どういうわけか、(A、B)の組み合わせではなく、A列だけにHAVING条件を適用できるようにしたいと思います。私の結果は本当に次のようになります。
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
しかし、より良い方法はありますか?
2番目の例で 'HAVING条件を列Aだけに適用する 'ことを説明する必要があります。 d | 1 'なので、それはどのように 'HAVING(a)> 2'に関連しているのですか? –
遅く応答して申し訳ありません。理由は 'a | d | 1 'が出現するのは、 'HAVING'が列Aにだけ適用されるので、aの合計は' 1 + 2 + 1 = 4'であるので、それに参加するものはすべて表示されるべきです( 'a | c'と' a | )。あなたの親切な助けをありがとう。 –