MariaDBでは、COUNT()
集計関数は、SELECT
によって取得された行の式のNULL以外の値の数のカウントを返します。 ステートメント。
サンプルデータ
次の表があるとします。
SELECT *
FROM Pets;
結果:
+-------+-----------+---------+---------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | +-------+-----------+---------+---------+------------+ | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +-------+-----------+---------+---------+------------+
次の例では、COUNT()
を使用します このテーブルをクエリするときに機能します。
例
上記の表の行をカウントする方法は次のとおりです。
SELECT COUNT(*)
FROM Pets;
結果:
8
これは、テーブルに8行あることを示しています。アスタリスクのワイルドカード(*
を使用したため、 )すべての行とすべての列を指定します。
特定の列を数える
カウントする列を指定することもできます。 COUNT()
関数はNULL
以外のみをカウントします 結果として、NULL
を含む列を指定した場合 値、それらの値はカウントされません。
これが私の意味を示す例です。
SELECT COUNT(DOB)
FROM Pets;
結果:
6
この場合、Pets
テーブルには2つのNULL
が含まれています DOB
の値 列(2匹のペットは生年月日を提供していません)なので、COUNT(DOB)
COUNT(*)
を使用した場合、8ではなく6を返します 。
理由COUNT(*)
前の例では、すべての行が返されました。これは、これらの2つの行がしたためです。 他の列にデータがあります。
フィルタリングされた結果
COUNT()
関数は、クエリによって返された行をカウントします。したがって、結果をフィルタリングすると、COUNT()
の結果になります。 それを反映します。
SELECT COUNT(*)
FROM Pets
WHERE PetName = 'Fluffy';
結果:
2
この場合、Fluffyという名前のペットが2匹います。したがって、クエリによって2つの行が返され、COUNT()
の結果が返されます。 2
です 。
個別の列を数える
DISTINCT
を追加するオプションがあります 個別の値のみが返されるように指定するキーワード(重複を除外するため):
SELECT
COUNT(PetName) AS "All",
COUNT(DISTINCT PetName) AS "Distinct"
FROM Pets;
結果:
+-----+----------+ | All | Distinct | +-----+----------+ | 8 | 7 | +-----+----------+
この場合、PetName
が8つありますが 値は、そのうちの7つだけが区別されます(2つは重複しています–ふわふわと呼ばれる2匹のペットがいます)。
HAVING
条項
COUNT()
を含めることができます クエリの複数の部分で。 SELECT
だけに限定されません リスト。
COUNT()
を使用する例を次に示します。 両方のHAVING
句とSELECT
リスト:
SELECT
PetTypeId,
COUNT(PetTypeId) AS Count
FROM Pets
GROUP BY PetTypeId
HAVING COUNT(PetTypeId) > 2
ORDER BY Count DESC;
結果:
+-------------+---------+ | PetTypeId | Count | |-------------+---------| | 3 | 4 | | 2 | 3 | +-------------+---------+
SQL COUNT()
を参照してください この例の詳細な説明と、COUNT()
の使用例については、初心者向けです。 ウィンドウ関数で。