PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Por que não posso usar aliases de coluna na próxima expressão SELECT?


Você pode usar um alias criado anteriormente no GROUP BY ou HAVING instrução, mas não em um SELECT ou WHERE demonstração. Isso ocorre porque o programa processa todos os SELECT declaração ao mesmo tempo e ainda não sabe o valor do alias.

A solução é encapsular a consulta em uma subconsulta e, em seguida, o alias fica disponível externamente.
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;