Ist es möglich, die HAVING-Klausel in Vertica nur auf einige meiner Spalten zu verwenden? Auf der Suche nach dem effizientesten Weg, da ich es mit Millionen von Zeilen zu tun habe.Vertica - Filter Ergebnisse mit HAVING nur auf einige Spalten
Hier ist ein Beispiel dafür, was ich versuche zu tun: die Tabelle t Gegeben :
A | B | number
--+---+-------
a | c | 1
a | c | 2
a | d | 1
b | e | 1
b | e | 1
c | c | 1
Wenn ich laufen:
SELECT A, B, sum(number) as total
FROM t
GROUP BY 1, 2
HAVING sum(number) >= 2
I erhalten:
A | B | total
--+---+------
a | c | 3
b | e | 2
Ich möchte irgendwie in der Lage sein, die HAVING-Bedingung nur auf Spalte A anzuwenden, und nicht auf die (A, B) -Kombination, so dass mein Ergebnis wirklich sein wird:
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
Aber gibt es einen besseren Weg:
A | B | total
--+---+------
a | c | 3
a | d | 1
b | e | 2
Ich glaube, ich es so tun könnte?
Sie müssen erklären, was die HAVING-Bedingung nur auf Spalte A anwenden soll. In Ihrem zweiten Beispiel geben Sie 'a | zurück d | 1 'so wie ist das mit 'HAVING (a)> 2' –
Sorry für die späte Antwort. Der Grund 'a | d | 1 erscheint, weil, da das "HAVING" nur für die Spalte A gilt, die Summe für a "1 + 2 + 1 = 4" ist, also sollte alles, was daran beteiligt ist, erscheinen ('a | c 'und' a | e'). Danke für deine freundliche Hilfe. –