Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Nie jest to błąd wyrażenia GROUP BY

Błąd mówi wszystko, nie grupujesz według MEMBERS.MEMBER_ID i MEMBERS.MEMBER_NAME .

SELECT MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME
     , COUNT(personal_training_sessions.session_id)
  FROM MEMBERS 
  JOIN personal_training_sessions
    ON personal_training_sessions.member_id = members.member_id
 GROUP BY MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME

Chcesz liczyć osobiste sesje na członek, więc musisz pogrupować według informacji o członku.

Podstawowe (oczywiście może być dużo bardziej złożone) zapytanie GROUP BY, SELECT to:

SELECT <column 1>, <column n>
     , <aggregate function 1>, <aggregate function n>
  FROM <table_name>
 GROUP BY <column 1>, <column n>

Funkcja agregująca jest, jak mówi Ken White, czymś w rodzaju MIN() , MAX() , COUNT() itp. GRUPUJ WEDŁUG wszystkich kolumny, które nie są agregowane.

Będzie to działać zgodnie z przeznaczeniem tylko wtedy, gdy Twoi MEMBERS tabela jest unikalna na MEMBER_ID , ale na podstawie Twojego zapytania podejrzewam, że tak. Aby wyjaśnić, co mam na myśli, jeśli Twoja tabela nie jest unikalna na MEMBER_ID wtedy nie liczysz liczby sesji na MEMBER_ID ale liczba sesji na MEMBER_ID i na MEMBER_NAME . Jeśli są w relacji 1:1, to właściwie to samo, ale jeśli możesz mieć wielu MEMBER_NAME s na MEMBER_ID to nie jest.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana hasła SYS w RAC

  2. Oracle ignoruje błąd nieprawidłowego identyfikatora w podzapytaniu

  3. jak wybrać nawet rekordy z tabeli w oracle?

  4. Błąd Xmlparserv2 podczas wdrażania aplikacji w jboss, Instalowanie modułu Oracle ojdbc w aplikacji internetowej JBoss for Java

  5. Wywołaj procedurę składowaną Oracle z parametrem wyjściowym kursora ze skryptu Pythona