COUNT
構文
関連項目:
構文、セマンティクスおよび制限事項の詳細は、分析ファンクションを参照してください。
目的
COUNTは、問合せによって戻された行の数を戻します。これは、集計ファンクションまたは分析ファンクションとして使用できます。
DISTINCTを指定する場合は、analytic_clauseのquery_partition_clauseのみを指定できます。order_by_clauseおよびwindowing_clauseは指定できません。
exprを指定すると、COUNTはexprがNULLでない行数を戻します。exprのすべての行を数えるか、または異なる値のみを数えることができます。
アスタリスク(*)を指定すると、このファンクションは重複値およびNULL値を含むすべての行を戻します。COUNTはNULLを戻しません。
ノート:
大量のデータに対してCOUNT (DISTINCT expr)操作を実行する前に、次のいずれかのメソッドを使用して、正確な結果よりも速くおおよその結果を取得することを検討します。
-
COUNT(DISTINCTexpr)ファンクションを使用する前に、APPROX_FOR_COUNT_DISTINCT初期化パラメータをtrueに設定します。このパラメータの詳細は、『Oracle Databaseリファレンス』を参照してください。 -
COUNT(DISTINCTexpr)ファンクションではなく、APPROX_COUNT_DISTINCTファンクションを使用します。「APPROX_COUNT_DISTINCT」を参照してください。
関連項目:
-
DISTINCT句の文字値を比較するためにCOUNTで使用される照合を定義する照合決定ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
集計の例
次の例では、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
. . .