PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Warum kann ich im nächsten SELECT-Ausdruck keine Spaltenaliase verwenden?

Sie können einen zuvor erstellten Alias ​​in GROUP BY verwenden oder HAVING -Anweisung, aber nicht in einem SELECT oder WHERE Erklärung. Das liegt daran, dass das Programm den gesamten SELECT verarbeitet -Anweisung gleichzeitig und kennt den Alias-Wert noch nicht.

Die Lösung besteht darin, die Abfrage in einer Unterabfrage zu kapseln, und dann ist der Alias ​​außerhalb verfügbar.

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;