MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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()関数を使わずとも柔軟に条件付き集計を行うことができます。

  1. MySQLのSELECTステートメントでCAST関数を使用する方法

    MySQLのCAST()関数とはMySQLのCAST()関数は、任意の型の値を指定した別の型に変換するための関数です。日付を文字列として扱いたい場合や、文字列を数値に変換したい場合など、データ型の変換が必要な場面で活躍します。ここでは、実際にテーブルを作成し、SELECTステートメント内でCAST()関数を使用してDATE型の値をCHAR型(文字列)に変換する手順を紹介します。サンプルテーブルの作成まず、日付型のカラムを持つテーブルを作成します。mysql> create table castFunctionDemo-> (-> ShippingDate date->

  2. 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