PostgreSQL: 単一クエリ内で計算列を効率的に使用する
強力なリレーショナル データベース管理システムである PostgreSQL は、堅牢なデータ操作機能を提供します。 ただし、単一のクエリ内で計算列を使用する方法は、他のデータベース システムとは異なります。 このニュアンスを探ってみましょう。
メイン クエリ内で計算列を直接使用しようとする、SQL に似たアプローチを検討してください。
<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, (total_1 + total_2) AS total_3 FROM data;</code>
これは PostgreSQL では失敗します。このエラーは、total_1
が計算される時点で total_2
と total_3
が既存の列として認識されないために発生します。
この解決策には、共通テーブル式 (CTE) またはサブクエリを使用して中間計算列を使用できるようにすることが含まれます。 CTE を使用してこれを実現する方法は次のとおりです:
<code class="language-sql">WITH calculated_totals AS ( 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 ) SELECT cost_1, quantity_1, cost_2, quantity_2, total_1, total_2, (total_1 + total_2) AS total_3 FROM calculated_totals;</code>
この改訂されたクエリでは、まず calculated_totals
と total_1
を計算する CTE total_2
を定義します。 次に、メインクエリは CTE からこれらの計算列を参照して、total_3
を計算します。 このアプローチにより、パフォーマンスのオーバーヘッドなしで正しい計算が保証されます。 一般に、複雑なクエリの読みやすさと保守性を考慮すると、CTE を使用することが推奨されます。 このシナリオでの CTE またはサブクエリの使用は、パフォーマンスに悪影響を及ぼしません。
以上がPostgreSQL の同じクエリ内で計算列を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。