skillup

技術ブログ

Database

CASE式のすすめ その3

投稿日:

本日もCASE式です。

下記のようなテーブル(studentclub)があるとします。

std_id | club_id | club_name | main_club_flg
——–+———+————–+—————
100 | 1 | 野球 | Y
100 | 2 | 吹奏楽 | N
200 | 2 | 吹奏楽 | N
200 | 3 | バドミントン | Y
200 | 4 | サッカー | N
300 | 4 | サッカー | N
400 | 5 | 水泳 | N
500 | 6 | 囲碁 | N

ここで下記のような実行を行います。

  • ここで1つのクラブに所属している学生はクラブIDを取得
  • 複数のクラブに入っている場合はmain_club_flgが立っているクラブIDを取得

第一ステップ
std_id,と列数を出す

これをベースに肉付けしていきます。

第二ステップ

std_id | main_club
——–+———–
100 | 1
200 | 3
300 | 4
400 | 5
500 | 6

このように集計関数のなかで書くとGROUP BYされたなかで条件分岐をさせることができます。

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

SQLクエリ比較

クエリの比較 SQLにおいては全く同じ結果を返すのであってもその検索結果が異なるということはよくあります。 例えば下記のようなテーブルがあった場合 co_cd | district —&# …

no image

JPQLでの算術関数

複雑なJPQLを書いていると、通常のレコードの取り出しだけではなく、合計(SUM)や算出(COUNT)などのいわゆる算術関数を使うことが一般的です。 JPQLでもこれらを通常通り扱うことができます。 …

no image

データベース設計のアンチパターン 重すぎるOLTP+Date型不統一+データ量想定が甘い

Contents1 重すぎるOLTP1.1 デメリット1.2 対策2 DATE型の型の不統一2.1 デメリット2.2 対策3 データ量の想定が甘い3.1 デメリット3.2 対策 重すぎるOLTP ※O …

no image

Firebaseについて

前回Lambdaに少し触れましたが、2019年6月現在、サーバーレスなアプリというものが活況(?)のようです。 大規模なアプリというと Webサーバー+RDB+サーバーサイドプログラミング言語 が必須 …

no image

MySQLのレプリケーションについて

MySQLのレプリケーションについて調べたことなどを。 Contents1 レプリケーションの基礎知識1.1 定義1.2 構成1.3 メリット1.3.1 参照性能の向上1.3.2 可用性の向上1.4 …