sql >> Database >  >> RDS >> PostgreSQL

Waarom kan ik geen kolomaliassen gebruiken in de volgende SELECT-expressie?

U kunt een eerder gemaakte alias gebruiken in de GROUP BY of HAVING statement maar niet in een SELECT of WHERE uitspraak. Dit komt omdat het programma alle SELECT statement tegelijkertijd en kent de waarde van de alias nog niet.

De oplossing is om de query in een subquery in te kapselen en dan is de alias daarbuiten beschikbaar.

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;


  1. Asynchrone replicatie instellen van Galera Cluster naar standalone MySQL-server met GTID

  2. PHP PDO versus normale mysql_connect

  3. Sorteer op dag van de week van maandag tot zondag

  4. hoe cte-waarde toe te wijzen aan variabele