SQL-Gruppierungsfunktionen verstehen: Den Fehler „Keine Einzelgruppen-Gruppenfunktion“ beheben
In SQL sind Gruppenfunktionen wie SUM( ) aggregieren Werte über mehrere Zeilen hinweg und gruppieren sie nach einer bestimmten Spalte. Beim Versuch, eine Gruppenfunktion mit einem einzelnen Spaltenausdruck in der SELECT-Anweisung zu kombinieren, tritt jedoch der Fehler „Keine Einzelgruppen-Gruppenfunktion“ auf. Dieser Fehler tritt auf, wenn die Gruppenfunktion eine Teilmenge der Daten in derselben Gruppe wie der einzelne Spaltenausdruck bearbeitet.
Um dieses Problem zu beheben, ziehen Sie die folgenden Optionen in Betracht:
1 . Löschen Sie die Gruppenfunktion:
Durch das Entfernen der SUM()-Funktion wird der aggregierte Wert ungültig, sodass nur der einzelne Spaltenausdruck übrig bleibt.
2. Löschen Sie den einzelnen Spaltenausdruck:
Durch das Entfernen der SSN-Spalte aus der SELECT-Anweisung wird der Fehler behoben, indem der maximale Summenwert zurückgegeben wird.
3. Fügen Sie eine umfassende GROUP BY-Klausel hinzu:
Durch die Einbeziehung aller einzelnen Spaltenausdrücke in die GROUP BY-Klausel wird sichergestellt, dass jede Zeile zu einer bestimmten Gruppe gehört und dem Umfang der Gruppenfunktion entspricht. Diese Option ist jedoch möglicherweise nicht geeignet, wenn Sie nach mehreren Spalten gruppieren und für jede Kombination eindeutige Werte haben möchten.
Alternative Abfrage zum Abrufen:
Für das Gegebene Um die SSN des Kunden mit den meisten Downloads zu finden, wird eine alternative Abfrage empfohlen:
SELECT TOP 1 SSN, SUM(TIME) AS TotalTime FROM downloads GROUP BY SSN ORDER BY TotalTime DESC;
Diese Abfrage ruft die SSN und die Gesamtzahl ab Downloadzeit für jede SSN, absteigend sortiert nach der Gesamtzeit. Die TOP 1-Klausel beschränkt das Ergebnis auf die SSN mit der höchsten Gesamtzeit.
Alternativ kann bei mehreren Kunden, die sich die gleiche maximale Gesamtzeit teilen, die folgende Abfrage verwendet werden:
SELECT SSN, SUM(TIME) AS TotalTime FROM downloads GROUP BY SSN HAVING SUM(TIME) = (SELECT MAX(SUM(TIME)) FROM downloads GROUP BY SSN);
Diese überarbeitete Abfrage ruft alle SSNs ab, die für die maximale Gesamtdownloadzeit gebunden sind, und stellt so sicher, dass keine Informationen verloren gehen.
Das obige ist der detaillierte Inhalt vonWie löse ich den Fehler „Keine Einzelgruppen-Gruppenfunktion' in SQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!