Тази грешка е напълно логична. COUNT е "агрегирана" функция. Така че трябва да му кажете кое поле да агрегира, което се прави с GROUP BY клауза.
Това, което вероятно има най-голям смисъл във вашия случай, би било:
SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;
Ако само използвайте COUNT(*) клауза, вие искате да върнете пълния брой редове, вместо агрегиране по друго условие. Вашето търсене, ако GROUP BY е имплицитно в този случай, може да се отговори с:"вид":Ако не посочите нищо, е малко като да попитате:"групиране по нищо", което означава, че ще получите един огромен агрегат, който е цялата таблица.
Като пример, изпълнение на:
SELECT COUNT(*) FROM table;
ще ви покаже броя на редовете в тази таблица, докато:
SELECT col_a, COUNT(*) FROM table GROUP BY col_a;
ще ви покаже броя на редовете на стойност на col_a . Нещо като:
col_a | COUNT(*)
---------+----------------
value1 | 100
value2 | 10
value3 | 123
Също така трябва да имате предвид, че * означава да преброиш всичко . Включително NULL с! Ако искате да преброите конкретно условие, трябва да използвате COUNT(expression) ! Вижте документите за агрегатните функции
за повече подробности по тази тема.