संगठनात्मक चार्ट में आगे बढ़ना
कर्मचारी-प्रबंधक पदानुक्रम में किसी भी गहराई तक जाएँ
संगठनात्मक चार्ट में आगे बढ़ना, CoddyKit पर SQL साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
संगठन-चार्ट वाला प्रश्न
"id, name और manager_id वाली employees तालिका दी गई है। किसी दिए गए प्रबंधक के अधीन सभी लोगों की सूची किसी भी गहराई तक बनाइए।" यह पुनरावर्ती CTE पर आधारित साक्षात्कार के सबसे सामान्य प्रश्नों में से एक है।
यह तालिका स्व-संदर्भित है: manager_id किसी दूसरी पंक्ति के id की ओर संकेत करता है। इस पाठ में आप इसमें नीचे की ओर (रिपोर्ट करने वाले लोग) और ऊपर की ओर (आदेश-शृंखला) दोनों दिशाओं में आगे बढ़ेंगे।
नमूना तालिका
इस डेटा की कल्पना कीजिए। CEO का प्रबंधक NULL है। बाकी सभी लोग आदेश-शृंखला में ऊपर रिपोर्ट करते हैं।
- 1 Ada (प्रबंधक NULL)
- 2 Ben (प्रबंधक 1)
- 3 Cleo (प्रबंधक 1)
- 4 Dan (प्रबंधक 2)
- 5 Eve (प्रबंधक 4)
इसलिए गहराई का क्रम है: Ada → Ben → Dan → Eve। आगे बढ़ते समय इसे ध्यान में रखें।
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
manager_id INT REFERENCES employees(id)
);किसी प्रबंधक से नीचे की ओर जाना
किसी चुने हुए प्रबंधक के अधीन सभी रिपोर्ट की सूची बनाने के लिए आधार उस प्रबंधक (या उसकी प्रत्यक्ष रिपोर्ट) का चयन करता है और पुनरावर्ती सदस्य manager_id का नीचे की ओर अनुसरण करता है।
यहाँ हम Ben (आईडी 2) से शुरू करके उसके अधीन आने वाले सभी लोगों को एकत्र करते हैं।
WITH RECURSIVE subtree AS (
SELECT id, name, manager_id, 1 AS depth
FROM employees WHERE id = 2
UNION ALL
SELECT e.id, e.name, e.manager_id, s.depth + 1
FROM employees e
JOIN subtree s ON e.manager_id = s.id
)
SELECT name, depth FROM subtree ORDER BY depth;आउटपुट पढ़ना
ऊपर दी गई क्वेरी Ben को गहराई 1 पर, Dan को गहराई 2 पर और Eve को गहराई 3 पर लौटाती है। आधार ने Ben से शुरुआत की; पहली पुनरावृत्ति में Dan मिला (जिसका प्रबंधक Ben है); दूसरी पुनरावृत्ति में Eve मिली (जिसका प्रबंधक Dan है); तीसरी पुनरावृत्ति में कोई नहीं मिला, इसलिए पुनरावृत्ति रुक गई।
यदि साक्षात्कारकर्ता पूछे, "Eve, Ben से कितने स्तर नीचे है?", तो depth कॉलम सीधे उत्तर देता है: 3 में से 1 घटाने पर 2 स्तर।
ऊपर CEO तक जाना
उलटा प्रश्न भी उतना ही सामान्य है: "Eve की CEO तक की पूरी आदेश-शृंखला दिखाइए।" JOIN की दिशा बदल दीजिए—अब पुनरावर्ती सदस्य वर्तमान पंक्ति के manager_id का ऊपर की ओर, उसके मूल प्रबंधक तक अनुसरण करता है।
WITH RECURSIVE chain AS (
SELECT id, name, manager_id, 1 AS lvl
FROM employees WHERE id = 5
UNION ALL
SELECT e.id, e.name, e.manager_id, c.lvl + 1
FROM employees e
JOIN chain c ON e.id = c.manager_id
)
SELECT name, lvl FROM chain ORDER BY lvl;नीचे बनाम ऊपर: JOIN बदलता है
नीचे और ऊपर जाने के बीच एकमात्र संरचनात्मक अंतर JOIN की शर्त है:
- नीचे (रिपोर्ट खोजने के लिए):
e.manager_id = cte.id— उन कर्मचारियों से मिलान करें जिनका प्रबंधक हमारे पास पहले से मौजूद पंक्ति है। - ऊपर (प्रबंधक खोजने के लिए):
e.id = cte.manager_id— उस कर्मचारी से मिलान करें जिसकी आईडी हमारी वर्तमान पंक्ति का प्रबंधक है।
इस दिशा-परिवर्तन को स्पष्ट रूप से समझा पाना साक्षात्कारकर्ताओं को प्रभावित करता है।
इंडेंट किया हुआ वृक्ष बनाना
एक बेहतर उत्तर depth का उपयोग करके रिक्त स्थान दोहराते हुए आउटपुट को इंडेंट किए गए वृक्ष के रूप में दिखाता है। इससे पता चलता है कि आप केवल पदानुक्रम के परिणाम निकाल ही नहीं सकते, उन्हें प्रस्तुत भी कर सकते हैं।
WITH RECURSIVE org AS (
SELECT id, name, 1 AS depth
FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, o.depth + 1
FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT REPEAT(' ', depth - 1) || name AS tree
FROM org
ORDER BY depth;पथ जमा करना
CEO से प्रत्येक व्यक्ति तक का पूरा मार्ग दिखाने के लिए path स्ट्रिंग साथ लेकर चलें। यह पिछली सीख में बताई गई वही तकनीक है, जिसे अब संगठन-चार्ट पर लागू किया गया है।
WITH RECURSIVE org AS (
SELECT id, name, CAST(name AS VARCHAR(500)) AS path
FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, o.path || ' / ' || e.name
FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT name, path FROM org ORDER BY path;प्रत्येक प्रबंधक की रिपोर्ट गिनना
एक सामान्य अनुवर्ती प्रश्न होता है: "प्रत्येक प्रबंधक को प्रत्यक्ष या अप्रत्यक्ष रूप से रिपोर्ट करने वाले कितने लोग हैं?" प्रत्येक प्रबंधक के लिए पुनरावर्ती उपवृक्ष का उपयोग करें, फिर उसका समूहीकरण करें। एक सामान्य तरीका यह है कि प्रत्येक मूल के लिए पुनरावृत्ति एक बार चलाएँ और आरंभिक प्रबंधक के आधार पर GROUP BY करें।
यहाँ हम Ada (CEO) के अधीन सभी अप्रत्यक्ष रिपोर्ट को पूरे वृक्ष में चलते हुए और मूल के नीचे की पंक्तियों को गिनते हुए गिनते हैं।
WITH RECURSIVE org AS (
SELECT id, name, manager_id, 0 AS depth
FROM employees WHERE id = 1
UNION ALL
SELECT e.id, e.name, e.manager_id, o.depth + 1
FROM employees e JOIN org o ON e.manager_id = o.id
)
SELECT COUNT(*) - 1 AS total_reports FROM org;सामान्य गलतियाँ
साक्षात्कारकर्ता जो ये जाल बिछाते हैं, उन पर ध्यान दें:
- गलत JOIN दिशा — ऊपर जाने का आशय होने पर
e.manager_id = cte.idका उपयोग करने से गलत समूह मिलता है। - आधार फ़िल्टर भूल जाना —
WHERE id = Xछोड़ देने पर हर पंक्ति आधार बन जाती है और पूरा वन लौटता है। - गहराई में एक की त्रुटि — तय करें कि आरंभिक पंक्ति की गहराई 0 होगी या 1, और उसी के अनुरूप बने रहें।
सिर्फ Self-Join क्यों नहीं
Self-Join निश्चित संख्या में स्तर ला सकता है: प्रत्यक्ष रिपोर्ट के लिए एक JOIN, उनके अधीन रिपोर्ट के लिए दो JOIN, और इसी तरह आगे। लेकिन आपको गहराई पहले से पता होनी चाहिए और हर स्तर के लिए एक JOIN लिखना पड़ता है।
पुनरावर्ती CTE एक ही क्वेरी में किसी भी, पहले से अज्ञात गहराई को संभालता है। जब साक्षात्कारकर्ता कहता है कि "पदानुक्रम में कितने भी स्तर हो सकते हैं," तो इससे साधारण Self-Join का विकल्प समाप्त हो जाता है और पुनरावृत्ति का संकेत मिलता है।
त्वरित जाँच
सुनिश्चित करें कि आप traversal की दिशा बदल सकते हैं।
पुनरावलोकन
संगठन-चार्ट का संचरण स्व-संदर्भित तालिका पर लागू किया गया पुनरावर्ती ढाँचा है:
- नीचे की ओर: किसी प्रबंधक को आधार बनाइए, और
e.manager_id = cte.idसे जोड़िए। - ऊपर की ओर: किसी कर्मचारी को आधार बनाइए, और
e.id = cte.manager_idसे जोड़िए। - इंडेंटेशन के लिए
depthऔर पूरी श्रृंखला के लिएpathसाथ लेकर चलिए। - पुनरावृत्ति किसी भी अज्ञात गहराई को संभाल लेती है, जबकि स्वयं-जोड़ ऐसा नहीं कर सकता।
आगे: संख्या और दिनांक-श्रेणियाँ बनाने के लिए पुनरावृत्ति का उपयोग।
एआई शिक्षक के साथ SQL सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “संगठनात्मक चार्ट में आगे बढ़ना” पाठ निःशुल्क है?
हाँ—“संगठनात्मक चार्ट में आगे बढ़ना” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“संगठनात्मक चार्ट में आगे बढ़ना” में मैं क्या सीखूँगा?
कर्मचारी-प्रबंधक पदानुक्रम में किसी भी गहराई तक जाएँ आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या SQL साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“संगठनात्मक चार्ट में आगे बढ़ना” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस SQL साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर SQL साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Anchor और Recursive सदस्य
- संगठनात्मक चार्ट में आगे बढ़ना
- संख्या और तारीख की श्रृंखलाएँ बनाना
- अनंत recursion से बचना