PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

grupować według potrzebne w instrukcji SQL count(*)?

Ten błąd ma sens. COUNT jest funkcją „agregującą”. Musisz więc powiedzieć mu, przez które pole ma być agregowane, co odbywa się za pomocą GROUP BY klauzula.

Ten, który prawdopodobnie ma największy sens w twoim przypadku, to:

SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;

Jeśli tylko użyj COUNT(*) prosisz o zwrócenie pełnej liczby wierszy, zamiast agregować według innego warunku. Twoje pytanie, jeśli GROUP BY jest domniemana w takim przypadku, można odpowiedzieć:„rodzaj”:Jeśli nic nie określisz, to trochę tak, jak pytanie:„grupuj przez nic”, co oznacza, że ​​otrzymasz jeden ogromny agregat, który jest całą tabelą.

Na przykład wykonanie:

SELECT COUNT(*) FROM table;

pokaże liczbę wierszy w tej tabeli, podczas gdy:

SELECT col_a, COUNT(*) FROM table GROUP BY col_a;

pokaże liczbę wierszy na wartość col_a . Coś takiego:

    col_a  | COUNT(*)
  ---------+----------------
    value1 | 100
    value2 | 10
    value3 | 123

Należy również wziąć pod uwagę, że * znaczy liczyć wszystko . W tym NULL s! Jeśli chcesz policzyć określony warunek, powinieneś użyć COUNT(expression) ! Zobacz dokumentację dotyczącą funkcji agregujących aby uzyskać więcej informacji na ten temat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przenieś zrzut Postgres do RDS

  2. Jak poprawić liczbę zapytań tekstowych dla Django za pomocą Postgres?

  3. Usunięcie indeksu za pomocą psycopg2 działa przed lub po zatwierdzeniu?

  4. Jak zrobić system budowania dla PostgreSQL

  5. Co oznacza „wybierz” tę samą tabelę co „z”?