„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Warum können ich keine Spalten -Aliase direkt in den Berechnungen derselben Auswahlanweisung verwenden?

Warum können ich keine Spalten -Aliase direkt in den Berechnungen derselben Auswahlanweisung verwenden?

Gepostet am 2025-03-22
Durchsuche:985

Why Can't I Use Column Aliases Directly in the Same SELECT Statement's Calculations?

Einschränkungen für die direkte Verwendung von Spalte Alias ​​für die Berechnung in SQL -Abfragen

In einer gegebenen SQL -Abfrage, die versucht, Spalten aliases zu verwenden avg_time und in den Ausdrücken rund (avg_time * cnt, 2) verursachen den Fehler "Spalte" avg_time "existiert nicht".

Die Grundursache ist die Berechnung der Reihenfolge der

select Anweisung. Das Programm verarbeitet gleichzeitig die gesamte Aussage aus, sodass der Alias ​​-Wert zu diesem Zeitpunkt nicht erkannt werden kann.

Lösung: Verwenden Sie verschachtelte Unterabfragen

] Um dieses Problem zu lösen, können Unterabfragen verwendet werden, um die Abfrage zu verkörpern und so einen Zwischendatensatz effektiv zu erstellen. In dieser Unterabfrage können Sie die erforderlichen Spalte aliases

avg_time

und cnt erstellen.

wählen AUS ( WÄHLEN Koalesce (rund (STDDEV_SAMP (Zeit), 2), 0) als stddev_time, Max (Zeit) als max_time, Runde (avg (Zeit), 2) als avg_time, Min (Zeit) als min_time, Zählen (Pfad) als CNT, Weg AUS Lastzeit Gruppe von Weg Bestellen von AVG_Time Desc Grenze 10 ) X;
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;

Aussage erfolgreich auf diese Aliase verweisen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3