Heim >Datenbank >MySQL-Tutorial >Wie kann ich Spaltenaliase nach der Gruppierung in SQL-SELECT-Anweisungen verwenden?
SQL SELECT-Anweisungen: Verwendung von Spaltenaliasen nach der Gruppierung
Datenbankoperationen erfordern häufig die Verwendung von Spaltenaliasen innerhalb von SELECT
-Ausdrücken nach einer GROUP BY
-Klausel. Die direkte Verwendung von Aliasnamen führt in diesem Zusammenhang jedoch häufig zu Fehlern.
Bedenken Sie diese SQL-Abfrage:
<code class="language-sql">SELECT COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, MAX(time) as max_time, ROUND(AVG(time), 2) as avg_time, MIN(time) as min_time, COUNT(path) as cnt, ROUND(avg_time * cnt, 2) as slowdown, path FROM loadtime GROUP BY path ORDER BY avg_time DESC LIMIT 10;</code>
Das Ausführen dieser Abfrage erzeugt möglicherweise einen Fehler, der darauf hinweist, dass „avg_time“ undefiniert ist. Dies liegt daran, dass die Datenbank die SELECT
-Anweisung als Ganzes verarbeitet. Der Alias ist nicht früh genug definiert, um innerhalb derselben Anweisung verwendet zu werden.
Die Lösung besteht in der Verwendung einer Unterabfrage. Dadurch kann der Alias in der äußeren Abfrage definiert und zugänglich gemacht werden. Hier ist die korrigierte Abfrage:
<code class="language-sql">SELECT stddev_time, max_time, avg_time, min_time, cnt, ROUND(avg_time * cnt, 2) as slowdown FROM ( SELECT COALESCE(ROUND(stddev_samp(time), 2), 0) as stddev_time, MAX(time) as max_time, ROUND(AVG(time), 2) as avg_time, MIN(time) as min_time, COUNT(path) as cnt, path FROM loadtime GROUP BY path ORDER BY avg_time DESC LIMIT 10 ) X;</code>
Die innere Unterabfrage definiert die Aliase. Die äußere Abfrage verwendet dann diese vordefinierten Aliase für Berechnungen und Auswahl und verhindert so den Fehler. Dieser Ansatz ermöglicht die Datenmanipulation auf der Grundlage gruppierter Ergebnisse durch Verweis auf Aliase, die im Bereich der Unterabfrage erstellt wurden.
Das obige ist der detaillierte Inhalt vonWie kann ich Spaltenaliase nach der Gruppierung in SQL-SELECT-Anweisungen verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!