sql >> Databasteknik >  >> RDS >> PostgreSQL

Varför kan jag inte använda kolumnalias i nästa SELECT-uttryck?

Du kan använda ett tidigare skapat alias i GROUP BY eller HAVING sats men inte i en SELECT eller WHERE påstående. Detta beror på att programmet bearbetar alla SELECT uttalande samtidigt och känner inte till aliasvärdet ännu.

Lösningen är att kapsla in frågan i en underfråga och sedan är aliaset tillgängligt utanför.

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. Så här lägger du till vertikala gränser till ditt SQL*Plus / SQLcl-utmatningsnät

  2. Skicka e-post från en utlösare i SQL Server (T-SQL)

  3. kan inte ta emot parameter från oracle-proceduren som exekveras av mybatis

  4. SQL-serverprestandastatistik för att ligga steget före i spelet