概要:このチュートリアルでは、PostgreSQLのCOUNT()
関数を使用してテーブル内の行数を数える方法を学習します。
PostgreSQL COUNT()関数概要
COUNT()
関数とは集約関数であり、問い合わせの特定の条件を満たす行数を取得できるようにしたものです。
次のステートメントでは、COUNT()
関数のさまざまな使用方法を説明しています。
COUNT(*)
COUNT(*)
関数は、NULLや重複を含むSELECT
ステートメントによって返された行の数を返します。
Code language: SQL (Structured Query Language) (sql)
テーブル全体にCOUNT(*)
関数を適用する場合、PostgreSQLはテーブル全体を順次スキャンしなければなりません。
大きなテーブルでCOUNT(*)
関数を使用すると、問い合わせが遅くなります。 これはPostgreSQLのMVCC実装に関連しています。 複数のトランザクションが同時に異なる状態のデータを参照するため、COUNT(*)
関数がテーブル全体にわたってカウントする直接的な方法はありません。したがって、PostgreSQLはすべての行をスキャンする必要があります。 ただし、column
の NULL
値は考慮しません。
Code language: SQL (Structured Query Language) (sql)
COUNT(DISTINCT column)
この形式で、COUNT(DISTINCT column)
は column.
Code language: SQL (Structured Query Language) (sql)
の中のユニークな非 null 値の数を返します。各グループに対する項目数を返そうと、COUNT()
関数を GROUP BY
句と共によく使用します。 例えば、各映画カテゴリーの映画の数を返すために、COUNT()
をGROUP BY
句と一緒に使うことができます。
PostgreSQL COUNT()関数の例
サンプルデータベースのpayment
テーブルを使って実演してみましょう。
1) PostgreSQL COUNT(*) の例
次のステートメントは COUNT(*)
関数を使用して payment
テーブルの取引件数を返します:
Code language: SQL (Structured Query Language) (sql)
以下がその出力例です。
2) PostgreSQL COUNT(DISTINCT column) example
顧客が支払った個別の金額を取得するには、次の例に示すようにCOUNT(DISTINCT amount)
関数を使用します。
Code language: SQL (Structured Query Language) (sql)
PostgreSQL COUNT() with GROUP BY clause
顧客による支払いの数を取得するには、GROUP BY
句を使って支払いを顧客IDに基づくグループに分け、COUNT()
関数を使って各グループに対する支払いをカウントします。
Code language: SQL (Structured Query Language) (sql)
次のクエリはこのアイデアを示しています。
PostgreSQL COUNT() with HAVING clause
HAVING
句でCOUNT
関数を使用して、特定の条件をグループに適用することができます。 例えば、次の文は40回以上支払いを行った顧客を見つけます。
Code language: SQL (Structured Query Language) (sql)
このチュートリアルでは、テーブル内の行数を返すPostgreSQL COUNT()
関数の使用方法を学びました。
- このチュートリアルは参考になりましたか?