Este erro faz todo o sentido.
COUNT
é uma função "agregada". Então você precisa dizer qual campo agregar, o que é feito com o GROUP BY
cláusula. O que provavelmente faz mais sentido no seu caso seria:
SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;
Se você somente use o
COUNT(*)
cláusula, você está pedindo para retornar o número completo de linhas, em vez de agregar por outra condição. Sua pergunta se GROUP BY
está implícito nesse caso, pode ser respondido com:"mais ou menos":Se você não especificar nada é como perguntar:"agrupar por nada", o que significa que você obterá um agregado enorme, que é a tabela inteira. Como exemplo, executando:
SELECT COUNT(*) FROM table;
mostrará o número de linhas nessa tabela, enquanto:
SELECT col_a, COUNT(*) FROM table GROUP BY col_a;
mostrará o número de linhas por valor de
col_a
. Algo como: col_a | COUNT(*)
---------+----------------
value1 | 100
value2 | 10
value3 | 123
Você também deve levar em conta que o
*
significa contar tudo . Incluindo NULL
s! Se você quiser contar uma condição específica, você deve usar COUNT(expression)
! Consulte os documentos sobre funções agregadas
para mais detalhes sobre este tópico.