sql >> Database teknologi >  >> RDS >> Oracle

Ikke en GROUP BY-udtryksfejl

Fejlen siger det hele, du grupperer ikke efter MEMBERS.MEMBER_ID og MEMBERS.MEMBER_NAME .

VÆLG MEMBERS.MEMBER_ID, MEMBERS.MEMBER_NAME , COUNT(personal_training_sessions.session_id) FRA MEDLEMMER JOIN personal_training_sessions ON personal_training_sessions.member_id =members.member_id GRUPPE AF MEMBERS.MEMBER_ID, MEMBERS_NAME.codeMEMBER_NAME. 

Du vil have antallet af personlige sessioner pr. medlem, så du skal gruppere efter medlemsoplysningerne.

Den grundlæggende (selvfølgelig kan det blive meget mere kompleks) GROUP BY, SELECT-forespørgsel er:

VÆLG , , , FRA GRUPPER EFTER ,

En aggregeret funktion er, som Ken White siger, noget som MIN() , MAX() , COUNT() osv. Du GRUPPER AF alle de kolonner, der ikke er aggregeret.

Dette vil kun fungere efter hensigten, hvis dine MEMBERS tabellen er unik på MEMBER_ID , men baseret på din forespørgsel formoder jeg, at det er det. For at præcisere, hvad jeg mener, hvis din tabel ikke er unik på MEMBER_ID så tæller du ikke antallet af sessioner pr. MEMBER_ID men antallet af sessioner pr. MEMBER_ID og pr. MEMBER_NAME . Hvis de er i et 1:1 forhold, er det faktisk det samme, men hvis du kan have flere MEMBER_NAME s pr. MEMBER_ID så er det ikke.



  1. Hvordan spørger man efter datoformatet ÅÅÅÅ-MM-dd TT-MM-ss?

  2. Postgres' CTE vs Subquery Performance forskel. Hvorfor?

  3. Hvordan kan jeg vedhæfte en database til en app i Heroku?

  4. Søg efter flere elementer i flere kolonner