PostgreSQL の同じクエリで計算列を使用する
PostgreSQL では、同じ SELECT
ステートメント内でエイリアスを直接使用して計算を行うことはできません。 たとえば、次の 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_3
を計算するときに、total_1
と total_2
がまだ定義されていないためです。
解決策は、サブクエリ (派生テーブル) を使用することです:
<code class="language-sql">SELECT cost_1, 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>
サブクエリ t
を作成することで、外側の total_1
ステートメントで使用可能な列として total_2
と SELECT
を定義します。このアプローチではパフォーマンスに悪影響はありません。 total_3
を正しく計算できるように、外側のクエリは内側のクエリの結果セットを参照します。
以上がPostgreSQL で同じクエリの計算列を使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。