ホームページ >データベース >mysql チュートリアル >PostgreSQL クエリで計算列を使用して計算を正しく実行するにはどうすればよいですか?

PostgreSQL クエリで計算列を使用して計算を正しく実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-14 07:14:43278ブラウズ

How to Correctly Perform Calculations Using Calculated Columns in PostgreSQL Queries?

PostgreSQL クエリで計算列を計算に正しく使用する

PostgreSQL でデータを処理する場合、新しい情報を得るために列に対して計算を実行する必要があることがよくあります。このため、PostgreSQL は、計算列を作成するのと同じクエリの一部として使用できる計算列を作成する機能を提供します。

問題: SQL 構文が正しくありません

次の SQL ステートメントを考えてみましょう。これは他のデータベース管理システム (DBMS) では機能しますが、PostgreSQL では失敗します。

<code class="language-sql">select cost_1, quantity_1, cost_2, quantity_2, 
      (cost_1 * quantity_1) as total_1,
      (cost_2 * quantity_2) as total_2,
      (calculated total_1 + calculated total_2) as total_3
from data;</code>

PostgreSQL は、列 total_1total_2 が存在しないことを示すエラーをスローします。

解決策: クエリを派生テーブルにラップします

この問題を解決するには、PostgreSQL では SELECT ステートメントを派生テーブルでラップする必要があります。

<code class="language-sql">select cost1,
       quantity_1,
       cost_2,
       quantity_2,
       total_1 + total_2 as total_3
from (
    select cost_1, 
           quantity_1, 
           cost_2, 
           quantity_2, 
           (cost_1 * quantity_1) as total_1,
           (cost_2 * quantity_2) as total_2
    from data
) t;</code>

このメソッドを使用すると、計算列 total_1 および total_2 を含む、派生テーブル内の列の別名にアクセスできます。これによってパフォーマンスが低下することはありません。

メモ

計算列を後続の計算で直接使用できるようにする生の SQL ステートメントは、PostgreSQL やその他の DBMS では推奨されないことに注意してください。これにより、パフォーマンスの問題が発生し、クエリの最適化が妨げられる可能性があります。

以上がPostgreSQL クエリで計算列を使用して計算を正しく実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。