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

PostgreSQLは、他の列を条件とする値で新しい列を作成します

    1回限りの操作は、単純なUPDATEで実現できます。 :

    UPDATE tbl
    SET    one_year_survival = (survival OR survival_days >= 365);
    

    名前にキャメルケース、空白、括弧を使用しないことをお勧めします。二重引用符で囲むことは許可されていますが、多くの場合、複雑化や混乱を招きます。識別子とキーについては、の章を検討してください。マニュアルの単語

    クエリの結果をエクスポートできることをご存知ですか? COPYを使用したCSVとして
    例:

    COPY (SELECT *, (survival OR survival_days >= 365) AS one_year_survival FROM tbl)
    TO '/path/to/file.csv';
    

    そもそも、この方法で冗長な列は必要ありません。

    コメントへの追加回答

    空の更新を回避するには:

    UPDATE tbl
    SET    "Dead after 1-yr" = (dead AND my_survival_col < 365)
          ,"Dead after 2-yrs" = (dead AND my_survival_col < 730)
    ....
    WHERE  "Dead after 1-yr" IS DISTINCT FROM (dead AND my_survival_col < 365)
       OR  "Dead after 2-yrs" IS DISTINCT FROM (dead AND my_survival_col < 730)
    ...
    

    個人的には、やむを得ない理由がある場合にのみ、このような冗長な列を追加します。通常はしません。パフォーマンスに関する場合:式と部分インデックスのインデックス



    1. ifステートメントが正常に機能しない場合の使用

    2. djangodb接続でPostgreSQLVERBOSITYをオンにする方法は?

    3. mysqlでテーブル制約を作成する

    4. このクエリでカウント値が0の行も返すようにするにはどうすればよいですか?