रोलअप के साथ समर्थन के आधार पर MySQL समूह जो आपके लिए व्यापक एकत्रीकरण प्रदान करेगा:
मान लीजिए आपकी कर्मचारी तालिका इस प्रकार है:
Name, Role, Gender
John, Manager, Male
Susie, Manager, Female
...
इस तरह की एक क्वेरी:
SELECT Gender, Role, COUNT(*)
FROM employee
GROUP BY Gender, Role
एक परिचित का उत्पादन करेंगे:
Male, Manager, 5
Male, Senior Manager, 2
Male, Employee, 20
आदि
अब, अगर हम रोलअप के साथ जोड़ते हैं:
SELECT Gender, Role, COUNT(*)
FROM employee
GROUP BY Gender, Role WITH ROLLUP
फिर MySQL भी जेंडर पर रोल एंड जस्ट ग्रुप को नजरअंदाज कर देगा:
Male, Manager, 5
Male, Senior Manager, 2
Male, Employee, 20
Male, NULL, 29
NULL भूमिका पंक्ति वह पंक्ति है जहाँ सभी भूमिकाओं को एक साथ जोड़ा जाता है और गिनती कुल पुरुषों की होती है। रोलअप दाएं से बाएं रोल करता है, इसलिए यदि आप GROUP BY a,b,c,d WITH ROLLUP
में थे आपको "ऑल ए, बी, सी", "ऑल ए, बी" और "ऑल ए" के लिए अतिरिक्त पंक्तियाँ मिलेंगी - इसलिए आपके द्वारा अपने ग्रुप में जेंडर और रोल डालने का क्रम महत्वपूर्ण है!
अंत में, यदि आप थोड़ा सा डेटा रीशेपिंग करना चाहते हैं तो आपके पास टेक्स्ट का केवल एक कॉलम है, जैसे आपका उदाहरण:
SELECT COALESCE(Role, Gender) as Desc, Ctr
(
SELECT Gender, Role, COUNT(*) as Ctr
FROM employee
GROUP BY Gender, Role WITH ROLLUP
) x --need to use a subquery - see manual
ORDER BY Gender, Role
लेकिन ध्यान दें कि यदि आप ऐसा करते हैं, तो आप एक समस्या का सामना करेंगे क्योंकि महिला "प्रबंधक" पंक्ति के अलावा पुरुष "प्रबंधक" पंक्ति को ठोस रूप से बताने के लिए कुछ भी नहीं बचा है; यह पूरी तरह से आदेश पर निर्भर है, और यह एक अच्छा विचार नहीं है; इसलिए हम आम तौर पर इस तरह से सबटोटलिंग को फ्रंट एंड पर छोड़ देते हैं, इसलिए रिपोर्ट पैकेज डेटा को एक साथ रखेगा। यदि आप इसे JSON में कनवर्ट करने जैसा कुछ करते हैं, तो इसे किसी दूरस्थ कंप्यूटर पर भेजें और ऑर्डरिंग खो जाए, जानकारी अर्थहीन हो जाती है। व्यक्तिगत रूप से मैं कुछ और करूंगा:
SELECT Gender, COALESCE(Role, '(TOTAL)') as Role, COUNT(*)
FROM employee
GROUP BY Gender, Role WITH ROLLUP
यह पुरुष-प्रबंधक, और महिला-प्रबंधक डेटा को पंक्ति में रखता है ताकि आप उन्हें अलग बता सकें, लेकिन यह NULL को (Total)
में बदल देता है यह क्या है इसके बारे में बेहतर जानकारी प्रदान करने के लिए
चर्चा करने के लिए अन्य चीजें हैं जैसे कि क्या होगा यदि कॉलम में स्वयं नल मान हों, लेकिन मैं आपको इसके लिए द फाइन मैनुअल की ओर संकेत करूंगा:https://dev.mysql.com/doc/refman/5.7/hi/group-by-modifiers.html