PostgreSQL CASE

概要:このチュートリアルでは、PostgreSQL CASE条件式を使用して条件付きクエリを作成する方法を学習します。

PostgreSQLCASE式は、他のプログラミング言語のIF/ELSE文と同じです。 それはあなたが強力なクエリを形成するためにクエリにif-elseロジックを追加することができます。

CASEは式なので、式を使用できる任意の場所で使用できます。,SELECT, WHERE, GROUP BY, およびHAVING句。

CASE式には、一般形式と単純形式の2つの形式があります。

1)一般的なPostgreSQLのケース式

以下は、CASEステートメントの一般的な形式を示しています:

Code language: SQL (Structured Query Language) (sql)

この構文では、各条件(condition_1, condition_2…) trueまたはfalseのいずれかを返すブール式です。

条件がfalseに評価されると、CASE式は次の条件を上から下に評価し、trueに評価される条件が見つかるまで評価します。

条件がfalseに評価されると、CASE式は次の条件を上から下に評価します。

条件がtrueと評価された場合、CASE式は条件に続く対応する結果を返します。 たとえば、condition_2trueと評価された場合、CASE式はresult_2を返します。 また、次の式の評価もすぐに停止します。

すべての条件がfalseと評価される場合、CASE式はELSEキーワードに続く結果(else_result)を返します。 ELSE句を省略した場合、CASE式はNULLを返します。

サンプルデータベースのfilmテーブルを見てみましょう。

A)一般的なケース例

次のロジックに基づいて、フィルムに長さでラベルを付けたいとします:

  • 長さが50分未満の場合、フィルムは短くなります。
  • 長さが50分以上120分以下の場合は、フィルムは中程度です。
  • 長さが120分を超えると、フィルムは長くなります。

このロジックを適用するには、次のようにSELECTステートメントでCASE式を使用できます:

Code language: PHP (php)

出力:

列エイリアスdurationCASE式の後に配置したことに注意してください。

B)集計関数を使用したCASEの使用例

次のロジックで映画に価格セグメントを割り当てるとします:

  • レンタル料金が0.99の場合、映画は経済的です。
  • レンタル率が1.99の場合、フィルムは質量です。
  • レンタル料金が4.99の場合、フィルムはプレミアムです。

そして、あなたは経済、質量、プレミアムに属する映画の数を知りたいです。

この場合、CASE式を使用して、次のようにクエリを作成できます:

Code language: SQL (Structured Query Language) (sql)

クエリの結果は次のとおりです:

この例では、CASE式を使用して、レンタル料金が各価格セグメントに該当する場合に1または0を返します。 そして、SUM関数を適用して、各価格セグメントの映画の合計を計算しました。

2)単純なPostgreSQLのケース式

PostgreSQLは、次のように単純な形式と呼ばれる別の形式のCASE式を提供します:

Code language: SQL (Structured Query Language) (sql)

最初にCASEexpressionを評価し、結果を各値と比較します( value_1, value_2, …) 一致するものが見つかるまで、WHEN句で順番に。

expressionの結果が値(value1、value2など)に等しいと、

)WHEN句では、CASETHEN句で対応する結果を返します。

CASEが一致するものが見つからない場合は、ELSEの後にあるelse_resultを返し、ELSEが利用できない場合はNULLの値を返します。

A)単純なPostgreSQLのケース式の例

次の文は、CASE式を使用して出力に評価の説明を追加します:

Code language: PHP (php)

この例では、単純なCASE式を使用して、filmテーブルの評価をG、PG、NC17、PG-13などのリテラル値と比較し、対応する評価の説明を返します。

B)単純なPostgreSQL CASE式を集計関数で使用する例

次のステートメントは、CASE式をSUM関数で使用して、各評価のフィルム数を計算します:

Code language: PHP (php)

このチュートリアルでは、PostgreSQLCASE式を使用して複雑なクエリを作成する方法を学習しました。

  • このチュートリアルは役に立ちましたか?

コメントを残す

メールアドレスが公開されることはありません。