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

कई पंक्तियों में कुछ मान होने की संख्या की गणना करने के लिए SQL क्वेरी

हां। आपके पास क्या काम करना चाहिए। (आपको व्युत्पन्न तालिका पर एक उपनाम जोड़ने की आवश्यकता होगी, आपको जो त्रुटि संदेश मिलता है वह स्वयं व्याख्यात्मक होना चाहिए। ठीक करने में आसान, बस अपनी क्वेरी के अंत में एक स्थान और अक्षर c (या जो भी नाम आप चाहते हैं) जोड़ें।

डुप्लिकेट (VoterID, ElectionID) . की संभावना के संबंध में एक चेतावनी है टुपल्स।

यदि आपके पास (वोटर आईडी, इलेक्शनआईडी) पर एक अद्वितीय बाधा है, तो आपकी क्वेरी ठीक काम करेगी।

यदि आपके पास एक अद्वितीय बाधा नहीं है (जो डुप्लिकेट (VoterID, ElectionId) की अनुमति नहीं देता है। ), तो एक मतदाता के लिए इलेक्शनआईडी 1 के लिए दो (2) पंक्तियों के साथ, और इलेक्शनआईडी 2 के लिए कोई पंक्ति नहीं होने की संभावना है... उस मतदाता के गिनती में शामिल होने की संभावना है। और एक मतदाता जिसने इलेक्शनआईडी 1 में दो बार और इलेक्शनआईडी 2 में केवल एक बार मतदान किया, उस मतदाता को गणना से बाहर कर दिया जाएगा।

COUNT के अंदर DISTINCT कीवर्ड शामिल करने से वह समस्या ठीक हो जाएगी, उदा.

HAVING COUNT(DISTINCT ElectionID) = 2

मैं क्वेरी को अलग तरीके से लिखूंगा, लेकिन आपके पास जो होगा वह काम करेगा।

बेहतर प्रदर्शन के लिए इलेक्शनआईडी 1 और इलेक्शनआईडी2 दोनों में भाग लेने वाले VoterID की गिनती प्राप्त करने के लिए, मैं एक इनलाइन व्यू (MySQL इसे एक व्युत्पन्न तालिका कहता है) का उपयोग करने से बचूंगा। मेरे पास क्वेरी इसके बजाय जॉइन ऑपरेशन का उपयोग करेगी। कुछ इस तरह:

SELECT COUNT(DISTINCT e1.voterID) AS NumVoters
  FROM elections e1
  JOIN elections e2
    ON e2.voterID = e1.voterID
 WHERE e1.electionID = 1
   AND e2.electionID = 2

अगर आपको गारंटी दी जाती है कि (voterID, ElectionID) अद्वितीय है, तो चयन आसान हो सकता है:

SELECT COUNT(1) AS NumVoters
  FROM elections e1
  JOIN elections e2
    ON e2.voterID = e1.voterID
 WHERE e1.electionID = 1
   AND e2.electionID = 2


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. लगातार दिनों की अधिकतम लंबाई की जाँच करना जो विशिष्ट स्थिति को पूरा करते हैं

  2. कमांड लाइन के माध्यम से लिनक्स पर एक MySQL उपयोगकर्ता बनाएं

  3. mysql में प्रारंभिक प्राधिकरण समस्या

  4. साइक्लाइट को मैसकल में कैसे सिंक करें

  5. उनमें से एक को छोड़कर टाइमस्टैम्प द्वारा परिणाम क्रम को कैसे क्रमबद्ध करें?