Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Trung bình trên một số lượng () trong cùng một truy vấn

Đây là truy vấn bạn đang thực hiện, được viết bằng một cú pháp ít khó hiểu hơn một chút.

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;

Bạn đang tham gia chéo bảng, tạo (6x6 =) tổng cộng 36 hàng và cô đọng con số này xuống còn 4, nhưng vì tổng số là 36 nên kết quả là sai.
Đây là lý do tại sao bạn không bao giờ nên sử dụng các phép nối ngầm.

Viết lại truy vấn thành:

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

Nếu bạn muốn số lượng hàng riêng lẻ trung bình ở dưới cùng làm:

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. Điều gì xảy ra nếu các kết nối MySQL liên tục không được đóng trên các trang PHP?

  2. SQL SELECT để lấy N số nguyên dương đầu tiên

  3. Cách chọn giá trị từ JSON trong mysql

  4. MySQL - Ràng buộc khóa ngoại có điều kiện

  5. Theo dõi thời gian truy vấn DB - Giá sách / quỳ