PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

групиране по необходимо в count(*) SQL израз?

Тази грешка е напълно логична. 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) ! Вижте документите за агрегатните функции за повече подробности по тази тема.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изпълнение на задействане при изглед?

  2. Може ли NLTK да се използва в съхранена процедура на Postgres Python

  3. Postgresql - връща целия ред като масив

  4. Изтрийте с помощта на CTE по-бавно, отколкото с помощта на временна таблица в Postgres

  5. Rails миграции:опита се да промени типа на колоната от низ на цяло число