Free tutorials & notes in Hindi & English · Clean code examples 🧰 मुफ़्त PDF और फ़ोटो टूल्स →
MySQL + SQL · Lesson 142

Same Salary वाले Employees

काम

एक आम query — और interview सवाल — है "समान salary वाले employees ढूँढो"। इसका मतलब एक से ज़्यादा बार आने वाली salary values ढूँढना, और उन्हें साझा करते लोग list करना। औज़ार हैं GROUP BY with HAVING, और वैकल्पिक रूप से जोड़ी बनाने को self-join।

💡 दोहराई salaries GROUP BY ... HAVING COUNT(*) > 1 से ढूँढिए, फिर मेल खाते employees list कीजिए।

कौन-सी salaries दोहराती हैं

SELECT salary, COUNT(*) AS how_many
FROM employees
GROUP BY salary
HAVING COUNT(*) > 1;
+--------+----------+ | salary | how_many | +--------+----------+ | 50000 | 3 | | 60000 | 2 | +--------+----------+

GROUP BY बराबर salaries समूहबद्ध करता है, और HAVING COUNT(*) > 1 सिर्फ़ एक से ज़्यादा employee द्वारा साझा वाले रखता है।

Employees list करना

SELECT name, salary
FROM employees
WHERE salary IN (
    SELECT salary FROM employees
    GROUP BY salary HAVING COUNT(*) > 1
);

Subquery साझा salaries ढूँढती है, और बाहरी query हर employee list करती है जिसकी salary उस set में है। अब आप असली लोग देखते हैं, सिर्फ़ salary values नहीं।

Self-join से जोड़ी बनाना

SELECT a.name AS emp1, b.name AS emp2, a.salary
FROM employees a
JOIN employees b
  ON a.salary = b.salary
 AND a.id < b.id;
+------+------+--------+ | emp1 | emp2 | salary | +------+------+--------+ | Aman | Ravi | 50000 | +------+------+--------+

Self-join employees को बराबर salary पर मिलाता है। Condition a.id < b.id हर जोड़ी एक बार दिखाता है और employee को ख़ुद से जोड़ने से रोकता है।

एक सामान्य pattern

यही दृष्टिकोण किसी भी "duplicate value" मामले को ढूँढता है: एक ही city के customers, एक ही price के products, एक ही marks वाले students। Column बदलिए, और GROUP BY / HAVING व self-join patterns बिल्कुल वैसे ही काम करते हैं।

हर कितने साझा करते हैं

SELECT salary, COUNT(*) AS employees
FROM employees
GROUP BY salary
HAVING COUNT(*) > 1
ORDER BY employees DESC;

Count पर ORDER BY जोड़ना सबसे ज़्यादा साझा salaries पहले दिखाता है — एक नज़र में सबसे बड़े clusters पहचानने को उपयोगी।

आम गलतियाँ

  • COUNT(*) को WHERE इस्तेमाल करना। GROUP BY के बाद HAVING इस्तेमाल कीजिए।
  • a.id < b.id बिना self-join। आपको duplicate और self-pairs मिलते हैं।
  • Subquery भूलना। लोग list करने को आपको यह चाहिए, सिर्फ़ salaries नहीं।
  • गलत column से group करना। जिस value पर मिला रहे हैं उससे group कीजिए।

सारांश

  • दोहराई salaries GROUP BY salary HAVING COUNT(*) > 1 से ढूँढिए।
  • लोग subquery से list कीजिए: WHERE salary IN (वो group)।
  • उन्हें बराबर salary और a.id < b.id पर self-join से जोड़िए।
  • वही pattern किसी भी shared-value मामले को ढूँढता है।
  • COUNT(*) पर filter को HAVING इस्तेमाल कीजिए, WHERE नहीं।

आगे, data group कीजिए GROUP BY और HAVING में, या repeats ढूँढिए finding duplicate rows में।

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

MySQL में समान salary वाले employees कैसे ढूँढूँ?
पहले GROUP BY salary HAVING COUNT(*) > 1 से ढूँढिए कौन-सी salaries दोहराती हैं, फिर उन employees को select कीजिए जिनकी salary उस list में हो। यह उन सारे employees को दिखाता है जो कम-से-कम एक और व्यक्ति से salary साझा करते हैं।
एक से ज़्यादा बार आने वाली salaries कैसे list करूँ?
SELECT salary FROM employees GROUP BY salary HAVING COUNT(*) > 1; इस्तेमाल कीजिए। GROUP BY बराबर salaries को समूहों में collapse करता है, और HAVING सिर्फ़ एक से ज़्यादा row वाले समूह रखता है।
एक salary साझा करते employees के नाम कैसे पाऊँ?
Group query subquery में डालकर filter कीजिए: SELECT name, salary FROM employees WHERE salary IN (SELECT salary FROM employees GROUP BY salary HAVING COUNT(*) > 1);। यह हर employee list करता है जिसकी salary साझा है।
समान salary वाले employees की जोड़ी कैसे बनाऊँ?
बराबर salary और अलग id पर self-join इस्तेमाल कीजिए: SELECT a.name, b.name FROM employees a JOIN employees b ON a.salary = b.salary AND a.id < b.id;। a.id < b.id जोड़ियों को दोहराना और self-matches बचाता है।
यहाँ WHERE के बजाय HAVING क्यों?
WHERE grouping से पहले individual rows filter करता है, पर COUNT(*) सिर्फ़ grouping के बाद ज्ञात होता है। HAVING GROUP BY के बाद aggregate पर filter करता है, तो COUNT(*) > 1 जाँचने की सही जगह है।
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

💻 लाइव कोड एडिटर

इस पेज के प्रोग्राम यहीं तैयार हैं — चलाएँ, बदलें और सीखें। कुछ भी इंस्टॉल किए बिना।
OneCompiler द्वारा संचालित। कोड एडिटर में अपने आप आ जाता है — Run दबाकर आउटपुट देखें। अगर एडिटर न खुले तो नए टैब में खोलें.
अगला topicLogin Authentication Query आपकी प्रगति: 142 / 151 (94%) · Lesson 143 / 151 आगे बढ़ें →

यह lesson कैसा लगा?

आपकी राय से हम content और बेहतर बनाते हैं।

अपना review और सुझाव लिखें (वैकल्पिक)

Review approve होने के बाद आपका नाम और शहर इसके साथ public दिख सकते हैं। Email या phone न लिखें।

▶ CodingEasily on YouTube

Video से सीखें – आसान Hindi में

चुनी हुई video: RDBMS भाग 3 – Class XI Commerce IT

▶ Channel subscribe करें