技術情報ブログ
Azure
2021.08.06

【初学者向け】Azure SQL Databaseで複数条件のカウントをCASE式で算出する方法

こんにちは。アーティサン株式会社の池内です。

 

本記事ではSQL初学者に向け、Azure SQL Databaseで「複数条件のカウントをCASE式で算出する方法」をご紹介します。

 

この方法を使うことで、合計値(例:日本在住の顧客数と日本在住かつ購入額が1万円以上の顧客数を1つのビューで表示させる)の一覧を簡単に算出することができます。

 

まずは本題へ入る前に、数あるデータベースの中で、何故Azure SQL Databaseを使用するか簡単に説明します。

 

Azure SQL Databaseを利用するメリット

Azure SQL Databaseとは、Microsoft社が提供するクラウド上で構築されている関係データベースシステム(RDBMS【Relational DataBase Management System】)です。

 

特徴

  • Azure AD を利用した認証及びアクセス権限の設定が可能
  • マネージド データベースである

 

Office アプリのために導入されることが多い Microsoft 365 には、フリー版の Azure AD サブスクリプションが付属しています。

 ここに Azure SQL Database の権限を紐づけることができます。

これにより、共有のアカウントが不要となるメリットが生まれます。

 また、バージョンアップやセキュリティの更新等のサーバー管理を Microsoft が行います。

ユーザーは データベースを使用したシステム開発に集中できます。

以上が Azure SQL Database を使用するメリットです。

本記事は、これから Azure SQL Database を使っていく方へ向けた内容となります。

ちなみに、Microsoft にはSQL Serverと呼ばれる製品があります。これはAzure SQL Database の元となったサービスで、こちらはオンプレミス版です。本記事の内容は、両方のサービスで適用できます。

 

単一条件のカウント方法

それでは、本題に移ります。

今回ご紹介する「複数条件のカウントをCASE式で算出する方法」を Azure SQL Database で実現するためには、少し工夫が必要です。

説明のため、まずは「日本在住の顧客数をカウントする」ケースについて考えます。

準備として、[顧客]という名前のテーブルを作成します。(下記参照)

名前国名購入額
鈴木アメリカ15,000
加藤日本5,000
田中日本12,000
飯田アメリカ6,000
佐藤日本20,000

「日本在住の顧客数をカウントする」ためには、このテーブルの[国名]が”日本”であるという条件で絞り込みを行い、その後カウントを行えば達成できます。

SELECT Count(*) AS Result
FROM 顧客
WHERE 国名 = N’日本’

実行結果

 Result
13

ここまではシンプルな SQL 文の記述です。

 

複数条件のカウント方法

続いて、「日本在住の顧客数」に加え、新たに「日本在住かつ購入額が1万円以上の顧客数」を表示する場合について考えます。

異なる条件を同時に当てはめる場合、 WHERE 文に条件を記述する方法は使えません。

それでは、カウント毎に直接条件文を書き込めばいいじゃないか、と思いますが……

この方法、Azure SQL Database では使えません。それでは、どのように記述すれば複数条件のカウントを算出できるでしょうか。

ここで、タイトルに出てきた CASE 式を利用します。 複数条件のカウントをCASE式で算出するには、以下の SQL 文を発行します。

SELECT 
Sum(CASE WHEN 国名 = N'日本' THEN 1 ELSE 0 END) AS Result1,
Sum(CASE WHEN 国名 = N'日本' AND 購入額 >= 10000 THEN 1 ELSE 0 END) AS Result2
FROM 果物

実行結果

 Result1Result2
132

上記 SQL 文のように、CountではなくSumを使用することで、主題を達成できます。

Countを使わない理由は、Count の中身にサブクエリを入力できない制約があるためです。

 

あとがき

本記事では、 複数条件のカウントをCASE式で算出する方法を紹介しました。

この記述は Oracle や MySQL を始め、SQLを使用する他のデータベースに流用できます。

( MySQL では Count 文に直接条件を書き込めるため、馴染みのない記述方法だったかもしれません)

今回は、他の SQL ではもっと簡単に記述できる内容について執筆しましたが、勿論 Azure SQL Database にも、SQLを使用する他のデータベースにはない関数や機能が使えるメリットが存在します。

次回は、Azure SQL Database 特有の関数について、記事を作成する予定です。

最後までお読みいただき、ありがとうございました。

Azure SQL DatabaseやPower AppsとSharePointなどの開発担当:池内佑哉

池内佑哉

IT2年生です。趣味は紅茶です。

Twitter
facebook
シェアする
記事カテゴリ
最新記事
Power PlatformPower Apps
2021.09.17

Power Apps で保守性を高めつつギャラリーのタブ切り替えを実装する

Power PlatformPower AutomateSharePointExcel
2021.09.15

Power AutomateでExcelをSharePointリストにインポートしたい時に考えること(第10回)

Power PlatformPower AutomateSharePointExcel
2021.09.10

Power AutomateでExcelをSharePointリストにインポートしたい時に考えること(第9回)

Power PlatformPower Automate
2021.09.08

Power Automate・Dataverse for Teams:選択肢列や参照列の表示名を取得する

Power PlatformPower AutomateSharePointExcel
2021.09.03

Power AutomateでExcelデータをSharePointにインポートするために考えること(第8回)

人気記事ランキング
1
Power PlatformPower Apps
2020.10.02

世界に広がる「モデル駆動型アプリ」のココがスゴイ!【第1回】

2
Power PlatformPower AutomateSharePointExcel
2021.07.14

Power AutomateでExcelデータをSharePointにインポートするために考えること(第2回)

3
Power PlatformPower AutomateSharePointExcel
2021.06.23

Power AutomateでExcelデータをSharePointにインポートするために考えること(第1回)

4
バス予報
2020.10.15

独立行政法人日本貿易振興機構(ジェトロ)による「日・ASEANにおけるアジアDX促進事業」の「マレーシア渋滞緩和を目指したサイバージャヤスマートシティバス 実証プロジェクト」採択について その①

5
バス予報
2020.10.16

独立行政法人日本貿易振興機構(ジェトロ)による「日・ASEANにおけるアジアDX促進事業」の「マレーシア渋滞緩和を目指したサイバージャヤスマートシティバス 実証プロジェクト」採択について その②

PageTop
ページトップに戻る