COUNT

構文

関連項目:

構文、セマンティクスおよび制限事項の詳細は、分析ファンクションを参照してください。

目的

COUNTは、問合せによって戻された行の数を戻します。これは、集計ファンクションまたは分析ファンクションとして使用できます。

DISTINCTを指定する場合は、analytic_clausequery_partition_clauseのみを指定できます。order_by_clauseおよびwindowing_clauseは指定できません。

exprを指定すると、COUNTexprがNULLでない行数を戻します。exprのすべての行を数えるか、または異なる値のみを数えることができます。

アスタリスク(*)を指定すると、このファンクションは重複値およびNULL値を含むすべての行を戻します。COUNTはNULLを戻しません。

注意:

大量のデータに対してCOUNT (DISTINCT expr)操作を実行する前に、次のいずれかのメソッドを使用して、正確な結果よりも速くおおよその結果を取得することを検討します。

  • COUNT (DISTINCT expr)ファンクションを使用する前に、APPROX_FOR_COUNT_DISTINCT初期化パラメータをtrueに設定します。このパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。

  • COUNT (DISTINCT expr)ファンクションではなく、APPROX_COUNT_DISTINCTファンクションを使用します。「APPROX_COUNT_DISTINCT」を参照してください。

関連項目:

集計の例

次の例では、COUNTを集計ファンクションとして使用します。

SELECT COUNT(*) "Total"
  FROM employees;

     Total
----------
       107

SELECT COUNT(*) "Allstars"
  FROM employees
  WHERE commission_pct > 0;

 Allstars
---------
       35

SELECT COUNT(commission_pct) "Count"
  FROM employees;

     Count
----------
        35

SELECT COUNT(DISTINCT manager_id) "Managers"
  FROM employees;

  Managers
----------
        18

分析の例

次の例では、employees表の各従業員について、その従業員の給与より50ドル少ない金額から150ドル多い金額の範囲の給与を得ている従業員の数を計算します。

SELECT last_name, salary,
       COUNT(*) OVER (ORDER BY salary RANGE BETWEEN 50 PRECEDING AND
                      150 FOLLOWING) AS mov_count
  FROM employees
  ORDER BY salary, last_name;

LAST_NAME                     SALARY  MOV_COUNT
------------------------- ---------- ----------
Olson                           2100          3
Markle                          2200          2
Philtanker                      2200          2
Gee                             2400          8
Landry                          2400          8
Colmenares                      2500         10
Marlow                          2500         10
Patel                           2500         10
. . .