PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Pourquoi ne puis-je pas utiliser d'alias de colonne dans la prochaine expression SELECT ?

Vous pouvez utiliser un alias créé précédemment dans le GROUP BY ou HAVING mais pas dans un SELECT ou WHERE déclaration. C'est parce que le programme traite tous les SELECT en même temps et ne connaît pas encore la valeur de l'alias.

La solution est d'encapsuler la requête dans une sous-requête, puis l'alias est disponible à l'extérieur.

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;