SQLでCOUNTを使用する方法
はじめに
- COUNT() SQLの集計関数です。
- この関数は、条件が指定されていない場合、テーブル内のレコード数をカウントします。
- 条件が指定されている場合、count関数は指定された条件を満たすレコードの数を返します。
バリエーション カウント ()in SQL
- COUNT(*)
カウント(*) テーブルに存在するレコードの数を表示するために使用されます。
COUNT(*)関数の結果には、NULLと重複エントリが含まれます。
構文:
SELECT COUNT (*) FROM tablename;
例:
まず、「employeedb」という名前のデータベースを作成します。次に、そのデータベースにテーブル「employee」を作成し、テーブルにレコードを挿入します。以降のすべての例では、このテーブルとデータベースを検討します。
COUNT()関数を使用して、「従業員」テーブルに存在するレコードの数を確認します。
mysql> USE employeedb; Database changed mysql> SELECT *FROM employee; +--------+----------+------------+ | Emp_ID | Emp_Name | Emp_Salary | +--------+----------+------------+ | 1 | Nikita | 30000 | | 2 | Riddhi | 25000 | | 3 | Nayan | 45000 | | 4 | Shruti | 15000 | | 5 | Anurati | 55000 | | 6 | NULL | NULL | | 7 | Anurati | 55000 | +--------+----------+------------+ 7 rows in set (0.00 sec)
mysql> SELECT COUNT(*) FROM employee;
出力:
+----------+ | COUNT(*) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
従業員テーブルには7つのレコードがあります。
- カウント(1)
COUNT(1)は、テーブルに存在するレコードの数を表示するためにも使用されます。 COUNT(1)関数の結果には、NULLと重複エントリが含まれます。 COUNT(1)関数はCOUNT(*)と同じように機能します。 COUNT(1)とCOUNT(*)の結果も同じです。
構文:
SELECT COUNT (1) FROM tablename;
例1: COUNT(1)を使用して、employeeテーブルに存在するレコードの数を表示します。
mysql> SELECT COUNT(1) FROM employee;
出力:
+----------+ | COUNT(1) | +----------+ | 7 | +----------+ 1 row in set (0.00 sec)
テーブルには7つのレコードがあります。
例2:
14をパラメータとしてCOUNT()関数に渡すとどうなるか見てみましょう。
mysql> SELECT COUNT(14) FROM employee;
出力:
+-----------+ | COUNT(14) | +-----------+ | 7 | +-----------+ 1 row in set (0.00 sec)
テーブルには7つのレコードがあります。したがって、COUNT()関数にパラメーターとして14を渡したにもかかわらず、7が出力として表示されます。 COUNT()関数に整数を渡すことは、テーブル内のそれらの行数をカウントすることを意味するものではありません。これは単に、テーブルに存在するすべての行に14が割り当てられ、その行が合計されて合計になり、出力として表示されることを意味します。
例3:
COUNT()関数にパラメーターとして-14を渡すとどうなるか見てみましょう。
mysql> SELECT COUNT(-14) FROM employee;
出力:
+------------+ | COUNT(-14) | +------------+ | 7 | +------------+ 1 row in set (0.07 sec)
テーブルには7つのレコードがあります。したがって、COUNT()関数にパラメーターとして-14を渡した場合でも、7が出力として表示されます。これは単に、テーブルに存在するすべての行に-14が割り当てられ、その行が合計されて合計になり、出力として表示されることを意味します。
- COUNT(ColumnName)
COUNT(ColumnName)は、指定された列の値を含むレコードの数を見つけるために使用されます。 columnnameをパラメーターとしてCOUNT()関数を使用している間、そのレコードのNULL値を含むレコードは無視されます。
構文:
SELECT COUNT(ColumnName) FROM tablename;
例1:
Emp_IDに存在するレコードの数を表示します。
mysql> SELECT COUNT(Emp_ID) FROM employee;
出力:
+---------------+ | COUNT(Emp_ID) | +---------------+ | 7 | +---------------+ 1 row in set (0.00 sec)
一意のEmp_IDを含む7つのレコードがあります。したがって、7が出力として表示されます。
例2:
Emp_Nameに存在するレコードの数を表示します。
mysql> SELECT COUNT(Emp_Name) FROM employee;
出力:
+-----------------+ | COUNT(Emp_Name) | +-----------------+ | 6 | +-----------------+ 1 row in set (0.00 sec)
従業員テーブルには7つのレコードがあり、そのうち1つのレコードにはEmp_NameのNULL値が含まれています。したがって、その特定のレコードは無視され、6が出力として表示されます。
例3:
Emp_Salaryに存在するレコードの数を表示します。
mysql> SELECT COUNT(Emp_Salary) FROM employee;
出力:
+-------------------+ | COUNT(Emp_Salary) | +-------------------+ | 6 | +-------------------+ 1 row in set (0.00 sec)
従業員テーブルには7つのレコードがあり、そのうちの1つのレコードにはEmp_SalaryのNULL値が含まれています。したがって、その特定のレコードは無視され、6が出力として表示されます。
- COUNT(DISTINCT ColumnnName)
DISTINCT ColumnNameをパラメーターとして持つCOUNT()関数は、特定の列の一意の値を含むレコードの数を表示するために使用されます。重複値とNULL値を含むレコードはカウントされません。
構文:
SELECT COUNT(DISTINCT ColumnName) FROM tablename;
例1:
Emp_IDの一意の値を含むレコードの数を表示します。
mysql> SELECT COUNT( DISTINCT Emp_ID) FROM employee;
出力:
+-------------------------+ | COUNT( DISTINCT Emp_ID) | +-------------------------+ | 7 | +-------------------------+ 1 row in set (0.05 sec)
Emp_IDの一意の値を含む7つのレコードがあります。
例2:
Emp_Nameの一意の値を含むレコードの数を表示します。
mysql> SELECT COUNT( DISTINCT Emp_Name) FROM employee;
出力:
+---------------------------+ | COUNT( DISTINCT Emp_Name) | +---------------------------+ | 5 | +---------------------------+ 1 row in set (0.00 sec)
Emp_Nameの一意の値を含む5つのレコードがあります。 Emp_NameのNULLおよび重複値は、DISTINCTキーワードでは考慮されません。
例3:
Emp_Salaryの一意の値を含むレコードの数を表示します。
mysql> SELECT COUNT( DISTINCT Emp_Salary) FROM employee;
出力:
+-----------------------------+ | COUNT( DISTINCT Emp_Salary) | +-----------------------------+ | 5 | +-----------------------------+ 1 row in set (0.00 sec)
Emp_Salaryの一意の値を含む5つのレコードがあります。 Emp_SalaryのNULLおよび重複値は、DISTINCTキーワードでは考慮されません。