Đâ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ẻ và 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