COUNT 関数
COUNT 関数は式で定義された行をカウントします。
COUNT 関数には 3 つのバリエーションがあります。
-
COUNT(*) は null を含むかどうかにかかわらず、ターゲットテーブルのすべての行をカウントします。
-
COUNT ( expression ) は、特定の列または式にある Null 以外の値を持つ行数を計算します。
-
COUNT ( DISTINCT expression ) は、列または式にある Null 以外の一意な値の数を計算します。
-
APPROXIMATE COUNT DISTINCT は、列または式にある Null 以外の個別の値の数を概算します。
構文
COUNT( * | expression )
COUNT ( [ DISTINCT | ALL ] expression )
APPROXIMATE COUNT ( DISTINCT expression )
引数
- expression
-
関数の対象となる列または式。COUNT 関数は引数のデータ型をすべてサポートしています。
- DISTINCT | ALL
-
引数 DISTINCT を指定すると、この関数はカウントを行う前に指定された式から重複した値をすべて削除します。引数 ALL を指定すると、この関数はカウントに使用する式から重複する値をすべて保持します。ALL がデフォルトです。
- APPROXIMATE
-
COUNT DISTINCT 関数を APPROXIMATE とともに使用すると、HyperLogLog アルゴリズムを使用して、列または式にある Null 以外の個別の値の数を概算します。APPROXIMATE キーワードを使用するクエリは、はるかに高速に実行され、相対誤差は約 2% と低くなります。クエリあたり、または GROUP BY 句がある場合にはグループあたりで、数百万個以上の多数の個別の値を返すクエリについては、概算を使用するのが妥当です。個別の値が数千個のように比較的少ない場合は、概算は正確なカウントよりも低速になる可能性があります。APPROXIMATE は、COUNT DISTINCT でのみ使用できます。
戻り型
COUNT 関数は BIGINT を返します。
例
フロリダ州のユーザーをすべてカウントします。
select count(*) from users where state='FL';
count ------- 510
EVENT テーブルからすべてのイベント名をカウントします。
select count(eventname) from event;
count ------- 8798
EVENT テーブルからすべてのイベント名をカウントします。
select count(all eventname) from event;
count ------- 8798
EVENT テーブルから一意の会場 ID をすべてカウントします。
select count(distinct venueid) as venues from event;
venues -------- 204
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 Time: 48.048 ms
select approximate count(distinct pricepaid) from sales;
count ------- 4553 Time: 21.728 ms