Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Rata-rata pada hitungan() dalam kueri yang sama

Ini adalah kueri yang Anda jalankan, ditulis dengan sintaks yang tidak terlalu tumpul.

SELECT
  avg(a.ress) as GjSnitt
  , modulID
FROM
  (SELECT COUNT(ressursID) as ress 
   FROM ressursertiloppgave
   GROUP BY modulID) as a
CROSS JOIN ressursertiloppgave r    <--- Cross join are very very rare!
GROUP BY modulID;

Anda menggabungkan silang tabel, membuat (6x6=) total 36 baris dan memadatkannya menjadi 4, tetapi karena jumlah totalnya adalah 36, hasilnya salah.
Inilah mengapa Anda tidak boleh menggunakan gabungan implisit.

Tulis ulang kueri ke:

SELECT AVG(a.rcount) FROM 
  (select count(*) as rcount 
   FROM ressursertiloppgave r
   GROUP BY r.ModulID) a

Jika Anda ingin jumlah baris individu dan rata-rata di bawah lakukan:

SELECT r1.ModulID, count(*) as rcount
FROM ressursertiloppgave r1
GROUP BY r1.ModulID 
UNION ALL 
  SELECT 'avg = ', AVG(a.rcount) FROM 
  (select count(*) as rcount 
   FROM ressursertiloppgave r2
   GROUP BY r2.ModulID) a



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nama database MySQL default

  2. Replika lokal database RDS

  3. Menggunakan PHPExcel untuk membuat file excel yang dihasilkan secara otomatis

  4. Bagaimana menemukan peringkat ke-n di MySQL?

  5. Pencarian Teks Lengkap di MySQL:Yang Baik, yang Buruk dan yang Jelek