この記事ではSQL CASE WHENの使い方を詳しく説明します

この記事ではSQL CASE WHENの使い方を詳しく説明します

シンプルな CASE WHEN 関数:

ケーススコアが「A」の場合は「優秀」、そうでない場合は「不合格」で終了
CASE スコアが「B」の場合は「良好」、そうでない場合は「不合格」で終了
CASE スコアが「C」の場合は「中」、そうでない場合は「不合格」で終了

これは、CASE WHEN 条件式関数を使用するのと同じです。

スコアが「A」の場合、「優秀」
     スコアが「B」の場合、「良好」
     スコアが「C」の場合は「中」、そうでない場合は「不合格」で終了

THEN の後の値は ELSE の後の値と同じ型である必要があります。そうでない場合はエラーが報告されます。次のように:

CASE スコアが「A」の場合は「優秀」、それ以外の場合は 0 終了

「Excellent」と 0 のデータ型が一致しない場合は、エラーが報告されます。

[エラー] ORA-00932: 矛盾したデータ型: CHAR が必要ですが、NUMBER です

単純な CASE WHEN 関数では、いくつかの単純なビジネス シナリオしか処理できませんが、CASE WHEN 条件式の記述ルールはより柔軟です。

CASE WHEN 条件式関数: JAVA の IF ELSE ステートメントに似ています。

形式:

CASE WHEN 条件 THEN 結果

[いつ...それから...]

ELSE 結果

終わり

condition はブール型を返す式です。式が true を返す場合、関数全体は対応する結果の値を返します。すべての式が false の場合、ElSE 後の結果の値が返されます。ELSE 句が省略されている場合は、NULL が返されます。

以下に一般的なシナリオをいくつか示します。

シナリオ 1: スコアがあり、スコア < 60 の場合は不合格、スコア >= 60 の場合は合格、スコア >= 80 の場合は優秀スコアが返されます。

選択
    学生名、
    (スコアが60未満の場合は「不合格」となります)
        スコアが60以上かつスコアが80未満の場合は「合格」
        スコアが80以上の場合、「優秀」
        ELSE '例外' END) AS REMARK
から
    テーブル

注意: スコアが null かどうかをチェックしたい場合、WHEN score = null THEN '試験に欠席' という書き方は正しくありません。正しい書き方は次のとおりです。

スコアがNULLの場合、「試験に欠席」、それ以外の場合は「正常」、終了

シナリオ 2: 教師は、クラスに何人の男子と何人の女子がいて、何人の男子と何人の女子が試験に合格したかを数える必要があります。教師は、SQL ステートメントを使用して結果を出力する必要があります。

テーブル構造は次のとおりです: STU_SEX フィールドでは、0 は男の子を表し、1 は女の子を表します。

コードスタッフ名セックスSTU_スコア
エックスエムシャオミン0 88
XLシャオレイ0 55
エクセレントシャオフェン0 45
XHリトルレッド1 66
翻訳シャオニ1 77
XYシャオ・イー1 99
選択 
	SUM (CASE WHEN STU_SEX = 0 THEN 1 ELSE 0 END) AS MALE_COUNT、
	SUM (CASE WHEN STU_SEX = 1 THEN 1 ELSE 0 END) AS FEMALE_COUNT、
	SUM (STU_SCORE >= 60 かつ STU_SEX = 0 の場合は 1、それ以外の場合は 0 終了) AS MALE_PASS、
	SUM (STU_SCORE >= 60 かつ STU_SEX = 1 の場合は 1、それ以外の場合は 0 終了) AS FEMALE_PASS
から 
	学生

出力は次のようになります。

男性数女性数男性パス女性パス
3 3 1 3

シナリオ 3: 集計関数を使用した従来の行から列への変換と統計分析

ここで、各都市の水消費量、電気消費量、熱消費量の合計を数え、SQL文を使用して結果を出力する必要があります。

エネルギー消費表は次のとおりです。E_TYPEはエネルギー消費タイプを表し、0は水消費、1は電気消費、2は熱消費を表します。

E_コードE_値E_タイプ
北京28.50 0
北京23.51 1
北京28.12 2
北京12.30 0
北京15.46 1
上海18.88 0
上海16.66 1
上海19.99 0
上海10.05 0
選択 
	E_コード、
	SUM(CASE WHEN E_TYPE = 0 THEN E_VALUE ELSE 0 END) AS WATER_ENERGY、--水の消費量 SUM(CASE WHEN E_TYPE = 1 THEN E_VALUE ELSE 0 END) AS ELE_ENERGY、--電気の消費量 SUM(CASE WHEN E_TYPE = 2 THEN E_VALUE ELSE 0 END) AS HEAT_ENERGY、--熱の消費量 FROM 
	エネルギーテスト
グループ化
	E_コード

出力は次のようになります

E_コード水_エネルギー電気エネルギー熱エネルギー
北京40.80 38.97 28.12
上海48.92 16.66 0

シナリオ 4: CASE WHEN でのサブクエリの使用

都市の電力消費量に基づいて電気料金を計算します。電力消費の単価を 3 つのレベルに分割し、対応する価格を使用して、異なるエネルギー消費値に応じてコストを計算します。

価格表は以下の通りです。

価格P_レベルP_制限
1.20 0 10
1.70 1 30
2.50 2 50

エネルギー消費値が 10 未満の場合は、P_LEVEL=0 のときの P_PRICE 値が使用されます。エネルギー消費値が 10 より大きく 30 未満の場合は、P_LEVEL=1 のときの P_PRICE 値が使用されます。

エネルギー <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) の場合、(SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 0)
    エネルギー > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 0) かつ エネルギー <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) の場合、(SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 1)
    エネルギー > (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 1) かつ エネルギー <= (SELECT P_LIMIT FROM TABLE_PRICE WHERE P_LEVEL = 2) の場合、(SELECT P_PRICE FROM TABLE_PRICE WHERE P_LEVEL = 2)

シナリオ5: 最大集計関数と組み合わせる

CASE WHEN 関数は使い方が簡単で、理解しやすい関数です。この記事では使い方について簡単に紹介しただけです。実際の業務では、さまざまなビジネス シナリオに応じて柔軟に使用する必要があります。

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • SQL Server での判断文 (IF ELSE/CASE WHEN) の使用例
  • SqlServer は、複数条件のあいまいクエリ問題を解決するために case を使用します。
  • SQL 学習: CASE WHEN THEN ELSE END の使い方
  • SQL ステートメントの行と列の変換の 2 つの方法の簡単な分析: ケース... 場合とピボット関数の適用
  • SQL 集計関数で case when then を使用する際のヒント
  • SQL で case when 構文を使用する方法
  • SQL CASE WHENの具体的な使用法の詳細な説明

<<:  HTML は CSS スタイルと JS スクリプトを動的に読み込みます。例

>>:  Layuiはログインインターフェース検証コードを実装します

推薦する

Linux におけるゼロコピー技術の使用に関する簡単な分析

この記事では、Linux におけるいくつかの主要なゼロコピー テクノロジと、ゼロコピー テクノロジを...

CSS3 rgb と rgba (透明色) の使い方の詳しい説明

誰もが色にとても敏感だと思います。私たちの目が見るところにはどこにでも色があります。では、CSS で...

JavaScript における型の必須および暗黙的な変換の詳細な説明

目次1. 暗黙的な変換二重等号での変換ブール型変換「+」と「-」 2. 強制型変換' ...

Link と @import の違いを詳しく見る

ページで CSS を使用する主な方法は、スタイル属性値をインラインで追加する方法、ページ ヘッダーで...

Dockerfile を使用して Docker でイメージを構築する方法

イメージを構築するこれまで、テストやデモンストレーションにさまざまなイメージを使用しました。多くの場...

vue3+threejs を使用して iView 公式サイトのビッグウェーブ特殊効果の例を模倣する

目次序文1. レンダリング2. コード3. 背景画像素材要約する序文Threejs は、Web ベー...

mysql 5.7.11 winx64.zip インストールと設定方法のグラフィックチュートリアル

MySql データベース システムをインストールして構成します。 1. ダウンロード http://...

Ubuntuにopencvをインストールする正しい方法の詳細な説明

この記事ではUbuntuでC++インターフェースを使用してopencvをインストールする方法について...

HTML の META タグの使用に関するヒントの例

HTML メタタグHTML メタタグは、Web ページのコンテンツに関する情報をブラウザや検索エンジ...

TomcatはNginxリバースプロキシのクライアントドメイン名を取得します

質問Nginx リバース プロキシの後、Tomcat アプリケーションは、クライアント ブラウザーの...

vue+rem カスタムカルーセル効果

vue+remを使用したカスタムカルーセルチャートの実装は参考までに。具体的な内容は以下のとおりです...

ウェブページを白黒に変換します(Google、Firefox、IE、その他のブラウザと互換性があります)

CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...

ウェブフロントエンド開発の細部

1 選択タグは閉じられている必要があります <select></select>...

Win10 構成 Tomcat 環境変数チュートリアル図

設定する前に、次の操作を行う必要があります。 1. まずjdk bloggerをインストールします。...

ウェブページ制作でウェブフォントファイルにベクターアイコンを追加する方法

ご存知のとおり、コンピューターには 2 種類の画像があり、1 つはビットマップ、もう 1 つはベクタ...