COUNT 関数
COUNT 関数は式で定義された行をカウントします。
COUNT 関数には 3 つのバリエーションがあります。COUNT(*) は null を含むかどうかにかかわらず、ターゲットテーブルのすべての行をカウントします。COUNT ( expression ) は、特定の列または式にある Null 以外の値を持つ行数を計算します。COUNT ( DISTINCT expression ) は、列または式にある Null 以外の一意な値の数を計算します。
構文
[ APPROXIMATE ] COUNT ( [ DISTINCT | ALL ] * | expression )
引数
- expression
-
関数の対象となる列または式。
- DISTINCT | ALL
-
引数 DISTINCT を指定すると、この関数はカウントを行う前に指定された式から重複した値をすべて削除します。引数 ALL を指定すると、この関数はカウントに使用する式から重複する値をすべて保持します。ALL がデフォルトです。
- APPROXIMATE
-
COUNT (DISTINCT expression) 関数は、APPROXIMATE とともに使用すると、HyperLogLog アルゴリズムを使用して、列または式にある Null 以外の一意な値の数を見積もります。APPROXIMATE キーワードを使用するクエリは、はるかに高速に実行され、相対誤差は約 2% と低くなります。クエリあたり、または GROUP BY 句がある場合にはグループあたりで、数百万個以上の多数の個別の値を返すクエリについては、概算を使用するのが妥当です。個別の値が数千個のように比較的少ない場合は、概算は正確なカウントよりも低速になる可能性があります。APPROXIMATE は、COUNT ( DISTINCT ) でのみ使用できます。
データ型
COUNT 関数は引数のデータ型をすべてサポートします。
COUNT 関数は BIGINT を返します。
例
フロリダ州のユーザーをすべてカウントします。
select count (*) from users where state='FL'; count ------- 510 (1 row)
EVENT テーブルから一意の会場 ID をすべてカウントします。
select count (distinct venueid) as venues from event; venues -------- 204 (1 row)
4 枚より多いチケットをまとめて販売した販売者ごとの回数をカウントします。販売者 ID で結果をグループ化します。
select count(*), sellerid from listing where numtickets > 4 group by sellerid order by 1 desc, 2; count | sellerid -------+---------- 12 | 6386 11 | 17304 11 | 20123 11 | 25428 ...
次の例では、COUNT および APPROXIMATE COUNT の戻り値と実行時間を比較します。
select count(distinct pricepaid) from sales; count ------- 4528 (1 row) Time: 48.048 ms select approximate count(distinct pricepaid) from sales; count ------- 4541 (1 row) Time: 21.728 ms