sql >> データベース >  >> RDS >> PostgreSQL

次のSELECT式で列エイリアスを使用できないのはなぜですか?

    GROUP BYで以前に作成したエイリアスを使用できます またはHAVING ステートメントですが、SELECTにはありません またはWHERE 声明。これは、プログラムがすべてのSELECTを処理するためです。 同時にステートメントであり、エイリアスの値をまだ認識していません。

    解決策は、クエリをサブクエリにカプセル化することです。そうすれば、エイリアスは外部で利用できます。

    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. MySQLREGEXPの例

    2. mysqlテーブルのテキストを見つけて置き換える方法

    3. 環境変数を設定せずにMacOS/XにOracleInstantclientをインストールしますか?

    4. repmgrを使用してPostgreSQL12のレプリケーションとフェイルオーバーを自動化する方法–パート2