SQLite count()
関数を使用して、結果セットの行数を返すことができます。
また、結果セットで特定の列がNULLでない回数を返すためにも使用できます。
2つの方法で使用できます。アスタリスクを渡す場合(*
)ワイルドカード文字。グループ内の行の総数を返します。列の名前を指定すると、その列がNULLでない回数が返されます。
構文
構文は次のようになります:
count(X)
count(*)
したがって、この場合、X
列の名前とアスタリスク(*
)ワイルドカードは、グループ内の行の総数を指定するために使用されます。
例:count(*)
これは、テーブルの行数を返すアスタリスク(*)構文を示す基本的な例です。
SELECT count(*) FROM Customer;
結果:
59
このクエリをChinookサンプルデータベースで実行したところ、顧客に59行あることがわかりました。 テーブル。
例:count(X)
この例では、テーブルの特定の列の名前を渡します。
SELECT count(Fax) FROM Customer;
結果:
12
この場合、ファックス 列には12個のNULL以外の値があります。
つまり、47行のファックスにNULL値が含まれています 列。
WHERE句の使用
count()
の結果 WHERE
の後に計算されます 条項。
SELECT count(Fax)
FROM Customer
WHERE CustomerId <= 5;
結果:
2
この場合、ファックスにはNULL以外の値が2つしかありませんでした 結果セット内の列。
列が返された場合(およびcount()
を使用しない場合の結果は次のようになります。 関数)。
SELECT CustomerId, Fax
FROM Customer
WHERE CustomerId <= 5;
結果:
CustomerId Fax ---------- ------------------ 1 +55 (12) 3923-5566 2 3 4 5 +420 2 4172 5555
したがって、 Faxの行1と5のみがNULL以外の値を持っていることがわかります。 列。
LIMIT句の使用
LIMIT
の後で結果は計算されません 条項。
SELECT count(Fax)
FROM Customer
LIMIT 5;
結果:
12
ただし、代わりに次のようなことを行うことができます:
SELECT count(Fax)
FROM (SELECT Fax FROM Customer
LIMIT 5);
結果:
2
グループ化された結果
count()
の便利なユースケースの1つ GROUP BY
と組み合わせて使用することです 句を使用すると、複数の行が返され、それぞれがグループを表し、そのグループ内の行の数が返されます。
これが例です。
SELECT
ar.Name,
count(al.Title)
FROM Album al
INNER JOIN Artist ar
ON ar.ArtistId = al.ArtistId
WHERE ar.Name LIKE 'D%'
GROUP BY ar.Name
LIMIT 10;
結果:
Name count(al.Title) --------------- --------------- David Coverdale 1 Deep Purple 11 Def Leppard 1 Dennis Chambers 1 Djavan 2 Dread Zeppelin 1
DISTINCTキーワード
DISTINCT
を追加できます 個別の値のみをカウントするキーワード。つまり、計算で重複する値を削除できます。
この例については、SQLite Count()の結果から重複を削除する方法を参照してください。