Função COUNT
A função COUNT conta as linhas definidas pela expressão.
A função COUNT tem as variações a seguir.
-
COUNT ( * ) conta todas as linhas na tabela de destino independente se elas contêm nulls ou não.
-
COUNT ( expressão ) computa o número de linhas com valores não NULL em uma coluna ou expressão específica.
-
COUNT ( expressão DISTINCT ) computa o número de valores distintos não NULL em uma coluna ou expressão.
-
APPROXIMATE COUNT DISTINCT aproxima o número de valores distintos não NULL em uma coluna ou expressão.
Sintaxe
COUNT( * | expression )
COUNT ( [ DISTINCT | ALL ] expression )
APPROXIMATE COUNT ( DISTINCT expression )
Argumentos
- expressão
-
A coluna ou expressão de destino na qual a função opera. A função COUNT é compatível com todos os tipos de dados de argumento.
- DISTINCT | ALL
-
Com o argumento DISTINCT, a função elimina todos os valores duplicados da expressão especificada antes realizar a contagem. Com o argumento ALL, a função retém todos os valores duplicados da expressão para contagem. ALL é o padrão.
- APPROXIMATE
-
Quando usada com APPROXIMATE, uma função COUNT DISTINCT usa um algoritmo de HyperLogLog para aproximar o número de valores distintos não NULL em uma coluna ou expressão. A consultas que usam a palavra-chave APPROXIMATE são executadas muito mais rápido, com um baixo erro relativo de cerca de 2%. A aproximação é justificada para consultas que retornam um grande número de valores distintos, com milhões ou mais por consulta ou grupo, se houver uma cláusula group by. Para conjuntos menores de valores distintos, na casa dos milhares, a aproximação pode ser mais lenta do que uma contagem precisa. APPROXIMATE pode ser usada somente com COUNT DISTINCT.
Tipo de retorno
A função COUNT retorna BIGINT.
Exemplos
Conte todos os usuários do estado da Flórida:
select count(*) from users where state='FL';
count ------- 510
Conte todos os nomes de eventos da tabela EVENT:
select count(eventname) from event;
count ------- 8798
Conte todos os nomes de eventos da tabela EVENT:
select count(all eventname) from event;
count ------- 8798
Conte todos os IDs exclusivos dos locais de evento da tabela EVENT:
select count(distinct venueid) as venues from event;
venues -------- 204
Conte o número de vezes que cada vendedor listou lotes de um ou mais ingressos para venda. Agrupe os resultados por ID de vendedor:
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 ...
Os seguintes exemplos comparam os valores de retorno e os tempos de execução para COUNT e 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