ORA-00979: Kein GROUP BY-Ausdruck
Der ORA-00979-Fehler weist auf eine Nichtübereinstimmung zwischen der SELECT
-Liste und der GROUP BY
-Klausel Ihrer SQL-Abfrage hin. Dies tritt normalerweise auf, wenn eine SELECT
-Anweisung Spalten enthält, die nicht in der GROUP BY
-Klausel enthalten sind, und diese Spalten nicht mit Funktionen wie SUM
, AVG
, MIN
, MAX
, COUNT
aggregiert werden. usw.
Szenario:
Ihre Abfrage umfasst wahrscheinlich mehrere Tabellen (z. B. review
, cs
, fact
) und die GROUP BY
-Klausel umfasst nicht alle nicht aggregierten Spalten in der SELECT
-Liste. Zum Beispiel:
<code class="language-sql">SELECT cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number, cf.some_other_column -- Problem: cf.some_other_column is missing from GROUP BY FROM review cr JOIN cs ON ... JOIN fact cf ON ... GROUP BY cr.review_sk, cr.cs_sk, cf.fact_date, cr.tracking_number;</code>
Lösung:
Um das Problem zu beheben, gehen Sie entweder wie folgt vor:
Fügen Sie die fehlende(n) Spalte(n) zur GROUP BY
-Klausel hinzu: Schließen Sie alle Spalten aus der SELECT
-Liste ein, die nicht in der GROUP BY
-Klausel zusammengefasst sind.
Aggregieren Sie die fehlende(n) Spalte(n):Verwenden Sie eine Aggregatfunktion (z. B. SUM(cf.some_other_column)
), um die Werte für die Spalte zusammenzufassen.
Zusätzliche Überlegungen:
Ungleichheits-Joins: Auch wenn alle SELECT
-Spalten in GROUP BY
stehen, kann der Fehler bei Ungleichheits-Joins auftreten (z. B. t1.id > t2.id
). Dadurch entstehen doppelte Zeilen, was einen Verstoß gegen das GROUP BY
-Prinzip darstellt. Überarbeiten Sie Ihre Join-Bedingungen oder verwenden Sie Unterabfragen, um Duplikate zu beseitigen.
Verstehen von GROUP BY
: Die GROUP BY
-Klausel gruppiert Zeilen mit identischen Werten in angegebenen Spalten, sodass Aggregatfunktionen für jede Gruppe ausgeführt werden können. Ohne ordnungsgemäße Gruppierung kann die Datenbank keinen einzelnen Wert für nicht aggregierte Spalten ermitteln.
Indem Sie sicherstellen, dass jede Spalte in Ihrer SELECT
-Liste entweder in der GROUP BY
-Klausel enthalten oder aggregiert ist, können Sie den ORA-00979-Fehler beheben und konsistente Abfrageergebnisse erhalten.
Das obige ist der detaillierte Inhalt vonWie behebe ich den ORA-00979-Fehler „Kein GROUP BY-Ausdruck' in SQL-Abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!