Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bukan kesalahan ekspresi GROUP BY

Kesalahan mengatakan semuanya, Anda tidak mengelompokkan menurut MEMBERS.MEMBER_ID dan 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

Anda ingin jumlah sesi pribadi per anggota, jadi Anda perlu mengelompokkan berdasarkan informasi anggota.

Dasar (tentu saja bisa menjadi lebih kompleks) GROUP BY, SELECT query adalah:

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

Fungsi agregat, seperti yang dikatakan Ken White, seperti MIN() , MAX() , COUNT() dll. Anda GROUP BY semua kolom yang tidak diagregasi.

Ini hanya akan berfungsi sebagaimana dimaksud jika MEMBERS . Anda tabel unik pada MEMBER_ID , tetapi berdasarkan permintaan Anda, saya curiga demikian. Untuk memperjelas apa yang saya maksud, jika tabel Anda tidak unik di MEMBER_ID maka Anda tidak menghitung jumlah sesi per MEMBER_ID tetapi jumlah sesi per MEMBER_ID dan per MEMBER_NAME . Jika mereka berada dalam hubungan 1:1 maka itu secara efektif adalah hal yang sama tetapi jika Anda dapat memiliki beberapa MEMBER_NAME s per MEMBER_ID maka tidak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mencoba memahami kardinalitas dalam diagram hubungan entitas?

  2. Mengapa mendapatkan Kesalahan ORA-00937

  3. Bagaimana Anda memilih semua kolom, ditambah hasil pernyataan CASE di Oracle 11g?

  4. Seberapa buruk mengabaikan pengecualian Oracle DUP_VAL_ON_INDEX?

  5. Bagaimana cara terhubung ke Oracle di go