sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Por qué no puedo usar alias de columna en la siguiente expresión SELECT?

Puede usar un alias creado previamente en el GROUP BY o HAVING declaración pero no en un SELECT o WHERE declaración. Esto se debe a que el programa procesa todos los SELECT declaración al mismo tiempo y aún no conoce el valor del alias.

La solución es encapsular la consulta en una subconsulta y luego el alias está disponible fuera.

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;