SQL Academy · पाठ

कर्मचारी और प्रबंधक

पदानुक्रम का एक पारंपरिक उदाहरण।

पाठ 2, कुल 4 में से13 चरण

कर्मचारी और प्रबंधक, CoddyKit पर SQL Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह SQL Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्वयं-जोड़ क्या होता है

स्वयं-जोड़ तब होता है, जब किसी तालिका को उसी तालिका से जोड़ा जाता है। यह असामान्य लग सकता है, लेकिन जब किसी तालिका की पंक्तियों का संबंध उसी तालिका की अन्य पंक्तियों से हो, तब यह अत्यंत उपयोगी होता है।

इसका पारंपरिक उदाहरण कर्मचारियों की तालिका है, जिसमें प्रत्येक कर्मचारी का कोई प्रबंधक हो सकता है—और वह प्रबंधक भी उसी तालिका में संग्रहीत एक कर्मचारी होता है।

कर्मचारियों की तालिका

आइए एक सरल employees तालिका बनाएँ। प्रत्येक कर्मचारी के पास id, name और manager_id होता है, जो उसी तालिका की किसी दूसरी पंक्ति की ओर संकेत करता है।

जब manager_id का मान NULL होता है, तो कर्मचारी का कोई प्रबंधक नहीं होता—वह पदानुक्रम के शीर्ष पर होता है, जैसे CEO।

CREATE TABLE employees (
  id         INT PRIMARY KEY,
  name       VARCHAR(100) NOT NULL,
  manager_id INT REFERENCES employees(id)
);

नमूना डेटा डालना

आइए तालिका में एक छोटी कंपनी का पदानुक्रम भरें। ऐलिस CEO हैं और उनका कोई प्रबंधक नहीं है। बॉब और कैरल दोनों ऐलिस को रिपोर्ट करते हैं। डेव और ईव बॉब को रिपोर्ट करते हैं।

INSERT INTO employees (id, name, manager_id) VALUES
  (1, 'Alice',   NULL),
  (2, 'Bob',     1),
  (3, 'Carol',   1),
  (4, 'Dave',    2),
  (5, 'Eve',     2),
  (6, 'Frank',   3);

जोड़ के बिना क्वेरी करना

यदि हम केवल सभी पंक्तियाँ चुनते हैं, तो हमें प्रबंधक के नाम नहीं, बल्कि केवल manager_id की मूल संख्याएँ दिखाई देती हैं। इसे पढ़ना कठिन है और अंतिम उपयोगकर्ताओं के लिए उपयोगी नहीं है।

SELECT id, name, manager_id
FROM employees;

स्वयं-जोड़ लिखना

प्रत्येक कर्मचारी के नाम के आगे उसके प्रबंधक का नाम दिखाने के लिए हम employees तालिका को उसी से जोड़ते हैं। हम दोनों प्रतियों को अलग-अलग उपनाम देते हैं: कर्मचारी के लिए e और प्रबंधक के लिए m।

जोड़ने की शर्त कर्मचारी के manager_id को प्रबंधक के id से जोड़ती है।

SELECT
  e.name   AS employee,
  m.name   AS manager
FROM employees e
JOIN employees m ON e.manager_id = m.id;

बिना प्रबंधक वाले कर्मचारियों को शामिल करना

ऊपर दिया गया INNER JOIN ऐलिस को छिपा देता है, क्योंकि उसका manager_id NULL है—दाईं ओर कोई मेल खाती पंक्ति नहीं है। सभी को शामिल करने के लिए, यहाँ तक कि शीर्ष-स्तरीय कर्मचारी को भी, LEFT JOIN का उपयोग कीजिए।

ऐलिस प्रबंधक वाले कॉलम में NULL के साथ दिखाई देंगी।

SELECT
  e.name              AS employee,
  m.name              AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

पठनीयता के लिए COALESCE का उपयोग करना

प्रबंधक वाले कॉलम में NULL भ्रमित कर सकता है। हम NULL को 'कोई प्रबंधक नहीं' जैसे पढ़ने योग्य लेबल से बदलने के लिए COALESCE का उपयोग कर सकते हैं, जिससे रिपोर्टों के लिए आउटपुट अधिक साफ़ हो जाता है।

SELECT
  e.name                              AS employee,
  COALESCE(m.name, 'No Manager')      AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id
ORDER BY manager, employee;

प्रत्यक्ष अधीनस्थों को खोजना

हम क्वेरी को इस प्रश्न के अनुसार बदल सकते हैं: किसी विशिष्ट प्रबंधक को कौन रिपोर्ट करता है? इसे प्रत्यक्ष अधीनस्थों को खोजना कहा जाता है। यहाँ हम ऐलिस को सीधे रिपोर्ट करने वाले सभी कर्मचारियों को खोजते हैं (आईडी = 1)।

SELECT e.name AS direct_report
FROM employees e
WHERE e.manager_id = 1;

प्रत्येक प्रबंधक के अधीनस्थों की गिनती करना

स्वयं-जोड़ को GROUP BY और COUNT के साथ मिलाने पर हम देख सकते हैं कि प्रत्येक प्रबंधक के कितने प्रत्यक्ष अधीनस्थ हैं। यह कार्यभार के विश्लेषण के लिए उपयोगी है।

SELECT
  m.name          AS manager,
  COUNT(e.id)     AS direct_reports
FROM employees e
JOIN employees m ON e.manager_id = m.id
GROUP BY m.name
ORDER BY direct_reports DESC;

दो स्तर नीचे तक

एक ही समय में पदानुक्रम के दो स्तर देखने के लिए—कर्मचारी, उसका प्रबंधक और प्रबंधक का प्रबंधक—हम तालिका को तीसरी बार जोड़ सकते हैं। प्रत्येक जोड़ पदानुक्रम का एक और स्तर जोड़ता है।

SELECT
  e.name   AS employee,
  m.name   AS manager,
  gm.name  AS grand_manager
FROM employees e
LEFT JOIN employees m  ON e.manager_id  = m.id
LEFT JOIN employees gm ON m.manager_id  = gm.id;

स्वयं-जोड़ों की सीमाएँ

स्वयं-जोड़ निश्चित, कम-स्तरीय पदानुक्रमों के लिए अच्छी तरह काम करते हैं (1–3 स्तर)। यदि गहराई अज्ञात या असीमित हो—जैसे किसी कंपनी का संगठन चार्ट, जो 10 स्तरों तक जा सकता है—तो आपको इसके बजाय पुनरावर्ती CTEs की आवश्यकता होती है।

अधिकांश व्यावहारिक कर्मचारी-प्रबंधक क्वेरी के लिए इस पाठ में बताई गई स्वयं-जोड़ विधि सही साधन है।

त्वरित जाँच

स्वयं-जोड़ों और कर्मचारी-प्रबंधक पदानुक्रम के बारे में अपनी समझ का परीक्षण कीजिए।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा कि एक ही तालिका में संग्रहीत पारंपरिक कर्मचारी-प्रबंधक पदानुक्रम को मॉडल करने और उस पर क्वेरी चलाने के लिए स्वयं-जोड़ का उपयोग कैसे किया जाता है।

मुख्य बातें:

  • स्वयं-जोड़ दो अलग-अलग उपनामों का उपयोग करके किसी तालिका को उसी से जोड़ता है।
  • जोड़ने की शर्त उसी तालिका में manager_id को id से जोड़ती है।
  • केवल प्रबंधक वाले कर्मचारियों को देखने के लिए INNER JOIN और सभी को शामिल करने के लिए LEFT JOIN का उपयोग कीजिए।
  • COALESCE NULL वाले प्रबंधक मानों को पढ़ने योग्य लेबल से बदल सकता है।
  • असीमित गहराई वाले पदानुक्रमों के लिए पुनरावर्ती CTEs पर विचार कीजिए।
शुरुआत निःशुल्क

एआई शिक्षक के साथ SQL सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
46
पाठ
183

अक्सर पूछे जाने वाले प्रश्न

क्या “कर्मचारी और प्रबंधक” पाठ निःशुल्क है?

हाँ—“कर्मचारी और प्रबंधक” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और SQL Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। SQL Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कर्मचारी और प्रबंधक” में मैं क्या सीखूँगा?

पदानुक्रम का एक पारंपरिक उदाहरण। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ SQL Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या SQL Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर SQL Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“कर्मचारी और प्रबंधक” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस SQL Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर SQL Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. सेल्फ JOIN क्या है
  2. कर्मचारी और प्रबंधक
  3. एक ही तालिका की पंक्तियों की तुलना
  4. सेल्फ JOIN की सीमाएँ
← SQL Academy पर वापस जाएँ