Monday 15 July 2013

python - How to get MySQL count within grouping -


इस तालिका को देखते हुए।

<पूर्व> + ---- + ------- + ------- + | आईडी | रंग | अनाज | + ---- + ------- + ------- + | 1 | ए | बी | | 1 | ए | बी | | 1 | ए | बी | | 2 | बी | एक्स | | 2 | बी | एक्स | | 2 | बी | जेड | | 2 | ई | ई | | 3 | ए | सी | | 3 | ए | बी | | 3 | ए | बी | + ---- + ------- + ------- +

निम्न परिणाम उत्पन्न करने के लिए MySQL क्वेरी क्या होगा। मुझे प्रत्येक आईडी के भीतर रंग / अनाज संयोजन की अनूठी घटनाओं की संख्या की गणना करने की आवश्यकता है।

  + ---- + ------- + ------- + ------------------- + | आईडी | रंग | अनाज | रंग / अनाज की गिनती | + ---- + ------- + ------- + ------------------- + | 1 | ए | बी | 1 | | 2 | बी | एक्स | 3 | | 2 | बी | जेड | 3 | | 2 | ई | ई | 3 | | 3 | ए | सी | 2 | | 3 | ए | बी | 2 | + ---- + ------- + ------- + ------------------- +  

यह मेरी वर्तमान क्वेरी है, लेकिन यह उस गिनती का उत्पादन नहीं करता जो मैं देख रहा हूं। गिनती के अनुसार ग्रुप की घटनाओं के लिए गिन है, आईडी के भीतर अनन्य घटनाओं को नहीं।

  आईडी, रंग, अनाज आदेश से तालिका समूह से आईडी, रंग, अनाज, गिनती (आईडी) का चयन करें आईडी द्वारा; तालिका समूह से आईडी, रंग, अनाज, गिन (*) का चयन करें  

  आईडी, रंग, अनाज के द्वारा  

यह पैदा करता है:

  आईडी का रंग अनाज गिनती 1 एबी 3 2 बीएक्स 2 2 बीज़ 1 2 ईई 1 3 एबी 2 3 एसी 1  

कौन सा लगभग है अब आपको आईडी से अलग रिकॉर्ड की संख्या दिखाने के लिए इसे बदलने की जरूरत है, इसलिए हम उप-क्वेरी का उपयोग करके ऐसा कर सकते हैं:

  x.id चुनें, COUNT (*) से (चयन करें) आईडी, रंग, अनाज, आईडी, रंग, अनाज द्वारा #table समूह से COUNT (*) सीएनटी) x xid द्वारा x समूह  

जिसके परिणामस्वरूप:

  आईडी संख्या 1 1 2 3 3 2  

अब, विस्तारित परिणाम प्राप्त करने के लिए, इसमें शामिल हों:

  a.id चुनें, a.color , A.grain, b.cnt से (आईडी, रंग, अनाज, आईडी (आईडी), रंग, अनाज द्वारा #table समूह से COUNT (*) सीएनटी) एक सम्मिलित करें (चयन करें x.id, COUNT (*) cnt से (चयन आईडी , रंग, अनाज, iT द्वारा #table समूह से COUNT (*) सीएनटी डी, रंग, अनाज) x.id द्वारा x समूह a.id = b.id  

जिसके परिणामस्वरूप:

  आईडी रंग अनाज सीएनटी 1 एबी 1 2 बीएक्स 3 2 बीजेड 3 2 ईई 3 3 एबी 2 एसी 2   

No comments:

Post a Comment