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()の使用例については、初心者向けです。 ウィンドウ関数で。