sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvorfor kan jeg ikke bruge kolonnealiaser i det næste SELECT-udtryk?

Du kan bruge et tidligere oprettet alias i GROUP BY eller HAVING sætning, men ikke i en SELECT eller WHERE udmelding. Dette skyldes, at programmet behandler alle SELECT sætning på samme tid og kender ikke aliasets værdi endnu.

Løsningen er at indkapsle forespørgslen i en underforespørgsel, og så er aliaset tilgængeligt udenfor.

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. SQL Reference for begyndere

  2. Dataanalyseguide:Det er tid til at udmærke sig ved at bruge Excel!

  3. SQL-forespørgsler

  4. Fejl under kortlægning af postgres-arrays i Spring JPA