आपको यहां जो चाहिए वह थोड़ी विस्तृत SQL क्वेरी है। यह सबक्वेरी से बना होगा।
पहला यह है (fiddle ) यह आपको प्रत्येक नाम के लिए कुल दरवाजे खोलने वाली वस्तुओं की संख्या देता है।
SELECT COUNT(*) total, name FROM stats GROUP BY name
अगला यह है (fiddle ) यह आपको प्रति दरवाजे और नाम के खुलने की संख्या देता है।
SELECT COUNT(*) bydoor, name, door FROM stats GROUP BY name, door
तीसरा वाला (fiddle ) दूसरे को शामिल करता है, और आपको प्रत्येक नाम के लिए एक पंक्ति देता है, जो द्वार खोलता है।
SELECT name,
GROUP_CONCAT(CONCAT(bydoor,'X',' door ', door) ORDER BY bydoor DESC) details
FROM ( SELECT COUNT(*) bydoor,
name,
door
FROM stats
GROUP BY name, door
) s
GROUP BY name
अंत में, आपको इस फ़ॉर्म की उन सबक्वेरी को एक साथ जोड़ने के लिए एक जॉइन की आवश्यकता है।
SELECT t.name, t.total, d.details
FROM ( .... the first subquery ....) t
JOIN ( .... the second subquery .... ) d ON t.name = d.name
ORDER BY t.total DESC, t.name
सभी वर्तनी में यह इस तरह दिखता है (fiddle
) आप इसे अपने sql
. में डाल दें परिवर्तनीय और आप जाने के लिए अच्छे हैं। यह सिर्फ एक मल्टीलाइन स्ट्रिंग है।
set sql {SELECT t.name, t.total, d.details
FROM (SELECT COUNT(*) total, name FROM stats GROUP BY name) t
JOIN ( SELECT name,
GROUP_CONCAT(CONCAT(bydoor,'X',' door ', door) ORDER BY bydoor DESC) details
FROM ( SELECT COUNT(*) bydoor,
name,
door
FROM stats
GROUP BY name, door
) s
GROUP BY name
) d ON t.name = d.name
ORDER BY t.total DESC, t.name}
तो नेस्टेड प्रश्नों के एक समूह से बनी एक क्वेरी है।
जैसे-जैसे आप SQL डेटा विश्लेषण में बेहतर होते जाते हैं, आपको सीखने के लिए यहां कुछ तरकीबें दी गई हैं।
GROUP BY
का उपयोग- क्वेरी नेस्टिंग, जिसे सबक्वेरी भी कहा जाता है। आप सबक्वेरी को वर्चुअल टेबल के रूप में सोच सकते हैं।
- (उन्नत)
GROUP_CONCAT
।