Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

एक ही क्वेरी में एक गिनती () पर औसत

यह वह क्वेरी है जिसे आप क्रियान्वित कर रहे हैं, थोड़ा कम मोटे सिंटैक्स में लिखा गया है।

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;

आप तालिका में क्रॉस जॉइन कर रहे हैं, कुल मिलाकर 36 पंक्तियाँ बना रहे हैं और इसे घटाकर 4 कर रहे हैं, लेकिन क्योंकि कुल संख्या 36 है, इसलिए परिणाम गलत है।
यही कारण है कि आपको कभी भी अंतर्निहित जॉइन का उपयोग नहीं करना चाहिए।

क्वेरी को फिर से लिखें:

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

यदि आप व्यक्तिगत पंक्ति गणना और . चाहते हैं नीचे औसत करते हैं:

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. पासवर्ड प्रॉम्प्ट के बिना mysqldump कैसे करें?

  2. phpunit के साथ पीडीओ का मज़ाक उड़ाना

  3. MySQL में ऑटो इंक्रीमेंट वर्कर

  4. माईएसक्यूएल ग्रुप बाय काउंट

  5. वर्चर (255) वी टिनीब्लोब वी टिनीटेक्स्ट