説明
この関数は、expr を照会した行数を返します。集計または分析関数として使用できます。
説明
- 分析関数として使用する場合は、
OVER句を使用してウィンドウを定義し、計算を実行する必要があります。これは一連の行に対して計算を実行し、複数の値を返します。 - 集計関数として使用する場合、この関数は一連の行に対して集計計算を実行し、結果として1つの値しか返せません。この場合、
OVER句を追加する必要はありません。
構文
COUNT({ * | [ DISTINCT | UNIQUE | ALL ] expr }) [ OVER (analytic_clause) ]
パラメータの説明
| パラメータ | 説明 |
|---|---|
| * | 条件を満たすすべての行を返し、重複行と空行を含むことを示します。 |
| DISTINCT | UNIQUE | ALL | クエリ時に重複を除外するかどうか。オプションであり、デフォルト値は ALL です。
|
| expr | 計算に参加する列名を指定します。 |
| OVER | OVER 句を使用してウィンドウを定義し、計算を実行します。詳細については、分析関数の説明を参照してください。 |
注意
COUNT関数は、exprが指定されている場合、NULLを返すことはありません。exprがNULL以外の値である統計数を返します。COUNT(*)を指定すると、すべての行の統計数を返します。パラメータDISTINCT、UNIQUE、またはALLを使用する場合は、exprとスペースで区切る必要があります。DISTINCTまたはUNIQUEキーワードを指定した場合、analytic_clauseにorder_by_clauseおよびwindowing_clauseを含めることはできません。
返り値のタイプ
自然数を返します。
例
テーブル tbl1 を作成し、テストデータを挿入します。
obclient> CREATE TABLE tbl1 (col1 INT,col2 varchar(10),col3 INT);
Query OK, 0 rows affected
obclient> INSERT INTO tbl1 VALUES
(1,'aa',10),(2,'bb',12),(3,'cc',15),(4,'dd',18),(5,'ee',20),
(6,'ff',23),(7,'gg',25),(8,'hh',30),(9,'ii',40),(10,'jj',15),
(11,'kk',NULL),(12,'oo',NULL);
Query OK, 12 rows affected
Records: 12 Duplicates: 0 Warnings: 0
obclient> SELECT * FROM tbl1;
+------+------+------+
| COL1 | COL2 | COL3 |
+------+------+------+
| 1 | aa | 10 |
| 2 | bb | 12 |
| 3 | cc | 15 |
| 4 | dd | 18 |
| 5 | ee | 20 |
| 6 | ff | 23 |
| 7 | gg | 25 |
| 8 | hh | 30 |
| 9 | ii | 40 |
| 10 | jj | 15 |
| 11 | kk | NULL |
| 12 | oo | NULL |
+------+------+------+
12 rows in set
集約関数の例
テーブル tbl1 の列 col3 のNULL以外の行数とテーブル tbl1 の総行数を求めます。
obclient> SELECT COUNT(col3),COUNT(*) FROM tbl1;
+-------------+----------+
| COUNT(COL3) | COUNT(*) |
+-------------+----------+
| 10 | 12 |
+-------------+----------+
1 row in set
分析関数の例
テーブル tbl1 内で col3 の値に基づいてソートされ、かつオフセットが 1 から 3 の範囲内にあるすべての行の数を求めます。
obclient> SELECT col1,col2,
COUNT(*) OVER (ORDER BY col3 RANGE BETWEEN 1 PRECEDING AND 3 FOLLOWING) AS mov_count
FROM tbl1;
+------+------+-----------+
| COL1 | COL2 | MOV_COUNT |
+------+------+-----------+
| 1 | aa | 2 |
| 2 | bb | 3 |
| 3 | cc | 3 |
| 10 | jj | 3 |
| 4 | dd | 2 |
| 5 | ee | 2 |
| 6 | ff | 2 |
| 7 | gg | 1 |
| 8 | hh | 1 |
| 9 | ii | 1 |
| 11 | kk | 2 |
| 12 | oo | 2 |
+------+------+-----------+
12 rows in set