2010-08-04 14 views
8

मैं सिर्फ MySQL सीख रहा हूं - क्या कुल कार्यों को गठबंधन (या घोंसला) करने का कोई तरीका है?MySQL में कुल कार्यों को कैसे जोड़ें?

SELECT user, count(answer) FROM surveyValues WHERE study='a1' GROUP BY user; 

यह मैं प्रत्येक उपयोगकर्ता से प्रश्नों के उत्तर की संख्या दे देंगे:

एक प्रश्न को देखते हुए।

SELECT avg(count(answer)) FROM surveyValues WHERE study='a1'; 

यह आँकड़ा गणना करने के लिए सही तरीका क्या है: प्रति उपयोगकर्ता प्रश्नों का उत्तर दिया की औसत संख्या ... की तरह कुछ क्या मैं सच में चाहते है?

यदि यह संभव है, तो क्या प्रत्येक प्रश्न के लिए इस आंकड़े को तोड़ने का कोई तरीका है? (उपयोगकर्ता एक ही प्रश्न का कई बार जवाब दे सकते हैं)। कुछ की तरह:

SELECT avg(count(answer)) FROM surveyValues WHERE study='a1' GROUP BY question; 

उत्तर

12

आप सबक्वेरी उपयोग करने के लिए:

SELECT x.user, 
     AVG(x.cnt) 
    FROM (SELECT user, COUNT(answer) AS cnt 
      FROM surveyValues 
      WHERE study='a1' 
     GROUP BY user) x 
GROUP BY x.user 

आप किसी अन्य कुल के साथ एक समग्र लपेट नहीं कर सकते। आप एक समग्र में एक विश्लेषणात्मक लपेट कर सकता है, अगर MySQL समर्थित विश्लेषणात्मक/रैंकिंग/विंडोइंग कार्यों ...

+0

दरअसल, सबक्वेरी उत्तर होते हैं। यदि आपके पास प्रति उपयोगकर्ता उत्तरों की संख्या से निपटने में एक से अधिक प्रश्न हैं, तो आप सबक्वायरी को एक दृश्य में डालने पर विचार कर सकते हैं। – tdammers

+0

ओह मैन, आप उपनाम कॉल कर सकते हैं? सुपर-गंधा। (मुझे यकीन है कि सुपर-बेवकूफ लग रहा था, लेकिन यह सिर्फ मेरा दिन बना दिया)। धन्यवाद, पूरी तरह से काम करता है। – Ender

-3

हाँ - उन सभी उचित लग रहे हो।

क्या आपने उन्हें आजमाया है और अप्रत्याशित परिणाम प्राप्त किए हैं?

आमतौर पर, मैं उम्मीद होती है कि आप भी चयन सूची में ड्राइविंग स्तंभ में शामिल हैं:

SELECT question, avg(count(answer)) 
FROM surveyValues 
WHERE study='a1' 
GROUP BY question; 
संबंधित मुद्दे