sql >> Database >  >> RDS >> Oracle

Geen GROUP BY-expressiefout

De fout zegt het al, je groepeert niet op MEMBERS.MEMBER_ID en 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
SELECT <column 1>, <column n> , <aggregate function 1>, <aggregate function n> FROM <table_name> GROUP BY <column 1>, <column n>

Een geaggregeerde functie is, zoals Ken White zegt, zoiets als MIN() , MAX() , COUNT() enz. U GROEPERT OP alles de kolommen die niet zijn geaggregeerd.

Dit werkt alleen zoals bedoeld als uw MEMBERS tabel is uniek op MEMBER_ID , maar op basis van uw vraag vermoed ik van wel. Om te verduidelijken wat ik bedoel, als uw tabel niet uniek is op MEMBER_ID dan tel je niet het aantal sessies per MEMBER_ID maar het aantal sessies per MEMBER_ID en per MEMBER_NAME . Als ze een 1:1-relatie hebben, is het in feite hetzelfde, maar als je meerdere MEMBER_NAME kunt hebben s per MEMBER_ID dan is het dat niet.



  1. MySQL:InnoDb:Semaphore-wachttijd heeft> 600 seconden geduurd. We laten de server opzettelijk crashen

  2. Priemgetallen afdrukken met SQL-query

  3. C# windows-toepassingstoegang tot databasegegevens blijven niet behouden bij afsluiten

  4. Iedereen die SQL Source Control van Red Gate gebruikt