SQLの特性関数について
特性関数とは、入力項がある集合に含まれるかどうかを調べるための関数で、含まれるなら 1 を、含まれないなら 0 を返すものです²。例えば、次のようなテーブルがあるとします。
id | name | gender |
---|---|---|
1 | A | M |
2 | B | F |
3 | C | M |
このテーブルからgenderカラムがMであるレコードの数を取得するには、次のようなSQL文を実行します。
SELECT SUM(CASE WHEN gender = 'M' THEN 1 ELSE 0 END) FROM table;
すると、CASE文が特性関数として動作して、genderカラムがMであれば1を、そうでなければ0を返します。その結果をSUM関数で合計することで、genderカラムがMであるレコードの数(2)が取得できます²。
このように、特性関数は集合に対する条件判定や集計に便利な関数です。
参考
ソース: Bing との会話 2023/2/25
(1) 開始日と終了日をまとめる. http://mickindex.sakura.ne.jp/database/celko/celko_se.html アクセス日時 2023/2/25.
(2) 開始日と終了日をまとめる. https://bing.com/search?q=sql+%e7%89%b9%e6%80%a7%e9%96%a2%e6%95%b0 アクセス日時 2023/2/25.
(3) 特性関数 (確率論) - Wikipedia. https://ja.wikipedia.org/wiki/%E7%89%B9%E6%80%A7%E9%96%A2%E6%95%B0_(%E7%A2%BA%E7%8E%87%E8%AB%96) アクセス日時 2023/2/25.
(4) Microsoft SQL データベース関数とは - SQL Server. https://learn.microsoft.com/ja-jp/sql/t-sql/functions/functions?view=sql-server-ver16 アクセス日時 2023/2/25.
(5) 第11回 SQL流集合操作(4) 集合の性質を調べる | gihyo.jp. https://gihyo.jp/dev/serial/01/sql_academy/0011 アクセス日時 2023/2/25.
今回はBing AIさんに聞いたことをブログに転記しました。