ホームページ > データベース > mysql チュートリアル > PostgreSQL の同じクエリ内で計算列を使用するにはどうすればよいですか?

PostgreSQL の同じクエリ内で計算列を使用するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-14 06:08:47
オリジナル
442 人が閲覧しました

How Can I Use Calculated Columns Within the Same Query in PostgreSQL?

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_2total_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_totalstotal_1 を計算する CTE total_2 を定義します。 次に、メインクエリは CTE からこれらの計算列を参照して、total_3 を計算します。 このアプローチにより、パフォーマンスのオーバーヘッドなしで正しい計算が保証されます。 一般に、複雑なクエリの読みやすさと保守性を考慮すると、CTE を使用することが推奨されます。 このシナリオでの CTE またはサブクエリの使用は、パフォーマンスに悪影響を及ぼしません。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート