MySQLのSUM()関数内で条件式を使うとどう評価される?仕組みと実例を解説
SUM()関数内の条件式はどのように評価されるのか
MySQLでは、SUM()関数の中に条件式を記述することで、その条件を満たす行の件数を取得できます。これは、条件式が真(TRUE)の場合に1、偽(FALSE)の場合に0として評価され、SUM()関数がそれらを合計する仕組みによるものです。
つまり、「条件を満たす行 = 1」「条件を満たさない行 = 0」として加算されるため、結果的に条件に一致する行数をカウントできるのです。
サンプルテーブル「employee」で確認してみよう
以下のようなデータを持つ「employee」テーブルを例に挙げます。
mysql> Select * from Employee; +----+--------+--------+ | ID | Name | Salary | +----+--------+--------+ | 1 | Gaurav | 50000 | | 2 | Rahul | 20000 | | 3 | Advik | 25000 | | 4 | Aarav | 65000 | | 5 | Ram | 20000 | | 6 | Mohan | 30000 | | 7 | Aryan | NULL | | 8 | Vinay | NULL | +----+--------+--------+ 8 rows in set (0.00 sec)
このテーブルには8名の従業員データが登録されており、給与(Salary)がNULLの行も含まれています。
条件式を使ったSUM()関数の実行例
それでは、「給与が20000より多い従業員は何人か」を知りたい場合を考えてみましょう。SUM()関数内に条件式「Salary > 20000」を記述することで、次のように求められます。
mysql> Select SUM(Salary>20000) from employee568; +-------------------+ | SUM(Salary>20000) | +-------------------+ | 4 | +-------------------+ 1 row in set (0.00 sec)
結果の読み方
上記の実行結果から、給与が20000を超えている従業員は4名であることがわかります。具体的には、Gaurav(50000)、Advik(25000)、Aarav(65000)、Mohan(30000)の4人が該当します。
なお、給与がちょうど20000のRahulとRamは条件を満たさないため0として評価され、NULLのAryanとVinayも同様にカウント対象外となります。このように、SUM()関数と条件式を組み合わせれば、COUNT()関数を使わずとも柔軟に条件付き集計を行うことができます。
-
MySQLのSELECTステートメントでCAST関数を使用する方法
MySQLのCAST()関数とはMySQLのCAST()関数は、任意の型の値を指定した別の型に変換するための関数です。日付を文字列として扱いたい場合や、文字列を数値に変換したい場合など、データ型の変換が必要な場面で活躍します。ここでは、実際にテーブルを作成し、SELECTステートメント内でCAST()関数を使用してDATE型の値をCHAR型(文字列)に変換する手順を紹介します。サンプルテーブルの作成まず、日付型のカラムを持つテーブルを作成します。mysql> create table castFunctionDemo-> (-> ShippingDate date->
-
MySQLのCASE式で「OR」条件を実現する方法を解説
MySQLのCASE式で「OR」条件を実現する方法 MySQLのCASE式では、複数のWHEN句を組み合わせることで、「OR」に相当する条件分岐を実現できます。さらに、WHEN句の中にOR演算子を直接記述することも可能です。ここでは、まずサンプルテーブルを作成し、実際の動作を順番に確認していきましょう。 1. サンプルテーブルの作成 まず、以下のクエリでサンプルテーブルを作成します。 mysql> create table caseOrConditionDemo -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KE