Database
 sql >> डेटाबेस >  >> RDS >> Database

वां उच्चतम वेतन

इंटरव्यू में पूछा जाने वाला सबसे आम और महत्वपूर्ण सवाल है कि हम एक टेबल में Nth का सबसे ज्यादा वेतन कैसे पा सकते हैं (2 सबसे ज्यादा सैलरी, 3 सबसे ज्यादा सैलरी, या Nth सबसे ज्यादा सैलरी), जहां N 2, 3, 4, 5 या कुछ भी हो सकता है।

प्रत्येक प्रोग्रामर जानता है कि n उच्चतम वेतन पाने का सबसे आसान तरीका एक तालिका में SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) का उपयोग करना है।

जब भी साक्षात्कारकर्ता आपसे 2 उच्चतम वेतन, 4 उच्चतम वेतन, आदि के बारे में कोई प्रश्न पूछता है, तो इस प्रश्न को हल करने के लिए, हमें कुछ महत्वपूर्ण अवधारणाओं के बारे में पता होना चाहिए जैसे कि एक सबक्वेरी, उपयोग किए जाने वाले फ़ंक्शन जैसे row_num (), रैंक रैंक () , आदि.

यह लेख आपको एन उच्चतम वेतन खोजने के विभिन्न तरीकों के बारे में बताएगा।

मौजूदा तालिकाओं पर विचार करें जिनमें निम्नलिखित रिकॉर्ड हैं:

टेबल:कर्मचारी

कर्मचारी FIRST_NAME LAST_NAME वेतन शहर विभाग मैनेजरिड
1001 वैभवी मिश्रा 65500 पुणे ओरेकल 1
1002 वैभव शर्मा 60000 नोएडा सी# 5
1003 निखिल वाणी 50500 जयपुर FMW 2
2001 प्राची शर्मा 55500 चंडीगढ़ ओरेकल 1
2002 भावेश जैन 65500 पुणे FMW 2
2003 रुचिका जैन 50000 मुंबई सी# 5
3001 प्रानोटी शेंडे 55500 पुणे जावा 3
3002 अनुजा WANRE 50500 जयपुर FMW 2
3003 दीपम जौहारी 58500 मुंबई जावा 3
4001 राजेश GOUD 60500 मुंबई परीक्षण 4
4002 अश्विनी बगत 54500 नोएडा जावा 3
4003 रुचिका अग्रवाल 60000 दिल्ली ओरेकल 1
5001 ARCHIT शर्मा 55500 दिल्ली परीक्षण 4

सहसंबद्ध उपश्रेणी का उपयोग करते हुए उच्चतम वेतन

एक सहसंबद्ध सबक्वेरी एक विशेष प्रकार की सबक्वेरी है, जहां सबक्वेरी मुख्य क्वेरी पर निर्भर करती है और मुख्य क्वेरी द्वारा लौटाई गई प्रत्येक पंक्ति के लिए निष्पादित की जाती है।

वाक्यविन्यास:

SELECT salary from employees e1WHERE N-1 = (SELECT COUNT (DISINCT salary) FROM employees e2 WHERE e2.salary > e1.salary)

जहां N को 23 या 4 नंबर से बदला जा सकता है।

उदाहरण 1: 4 उच्चतम वेतन खोजने के लिए एक प्रश्न लिखें:

SELECT employeeid, salary from employees e1WHERE 3 = (SELECT COUNT (DISTINCT salary) FROM employees e2 WHERE e2.salary > e1.salary)

जहां एन =4, एन -1:4 -1 =3.

तालिका से 4 उच्चतम वेतन

आउटपुट:

कर्मचारी वेतन
3003 58500

स्पष्टीकरण:

तालिका में डुप्लिकेट वेतन को संभालने के लिए विशिष्ट कीवर्ड है। एन उच्चतम वेतन की खोज के लिए, हम केवल गैर-डुप्लिकेट वेतन पर विचार करते हैं। उच्चतम वेतन का अर्थ है कि इससे अधिक कोई वेतन नहीं है। दूसरे सबसे ज्यादा वेतन का मतलब सिर्फ एक वेतन उससे ज्यादा है। तीसरे उच्चतम वेतन का अर्थ है केवल दो वेतन तीसरे वेतन से अधिक हैं, इसी तरह Nth उच्चतम वेतन का अर्थ है N-1 वेतन इससे अधिक है।

चौथा उच्चतम वेतन कर्मचारी आईडी 3003 का 58500 है।

उदाहरण 2:3 उच्चतम वेतन खोजने के लिए एक प्रश्न लिखें:

SELECT employeeid, salary from employees e1WHERE 3 - 1 = (SELECT COUNT (DISTINCT salary) FROM employees e2 WHERE e2.salary > e1.salary)

जहां एन =3, एन -1:3 -1 =2।

तालिका से दूसरा उच्चतम वेतन

आउटपुट:

कर्मचारी वेतन
1002 60000
4003 60000

दूसरा सबसे बड़ा वेतन दो कर्मचारी आईडी 1002 और कर्मचारी आईडी 4003 का 58500 है।

उदाहरण 3:5 उच्चतम वेतन खोजने के लिए एक प्रश्न लिखें:

SELECT employeeid, salary from employees e1WHERE 6 - 1 = (SELECT COUNT (DISTINCT salary) FROM employees e2 WHERE e2.salary > e1.salary)

जहां एन =6, एन -1:6 -1 =5।

तालिका से 5 उच्चतम वेतन

आउटपुट:

कर्मचारी वेतन
4002 54500

कर्मचारी आईडी 4002 का पांचवां उच्चतम वेतन 54500 है।

LIMIT कीवर्ड का उपयोग कर उच्चतम वेतन

वाक्यविन्यास:

SELECT salary FROM employees ORDER BY salary desc LIMIT N-1, 1;

उदाहरण 1: 2 उच्चतम वेतन खोजने के लिए एक प्रश्न लिखें।

SELECT employeeid, salary FROM employees ORDER BY salary desc LIMIT 1, 1;

आउटपुट:

कर्मचारी वेतन
2002 65500

प्रश्न में सीमा 1, 1 बताता है कि कितना उच्चतम वेतन प्रदर्शित किया जाना है।

अगर आप 1 लिखते हैं, तो 2 आउटपुट इस तरह होंगे

कर्मचारी वेतन
2002 65500
4001 60500

N TOP कीवर्ड का उपयोग कर उच्चतम वेतन

परिदृश्य कर्मचारियों की तालिका से एन उच्चतम कर्मचारी वेतन की गणना करना है। चरण इस प्रकार हैं:

1. तालिका से कर्मचारियों के TOP अद्वितीय वेतन की खोज करने के लिए पहला कदम है।
2. अगला कदम पहले चरण के परिणामस्वरूप सभी वेतनों के बीच न्यूनतम वेतन की गणना करना है। इस कदम से हमें एन उच्चतम वेतन मिलता है।
3. उपरोक्त चरणों के परिणाम से, उस कर्मचारी के विवरण की पहचान करें जिसका वेतन न्यूनतम वेतन है।

उदाहरण 1:

SELECT * FROM employees WHERE salary = (SELECT MIN(salary) FROM employees WHERE salary IN(SELECT DISTINCT TOP N salary from employees ORDER BY salary DESC ));

उपरोक्त SQL कथन का उपयोग उच्चतम वेतन वाले कर्मचारियों का विवरण खोजने के लिए किया जाता है।

आइए संक्षेप में उपरोक्त SQL कथन की व्याख्या देखें:

एन =4 पर विचार करें।

जब भी किसी SQL क्वेरी में उप-क्वेरी शामिल होती है, तो याद रखें कि आंतरिक क्वेरी पहले निष्पादित होगी फिर बाहरी क्वेरी निष्पादित की जाएगी।

निम्नलिखित परिणाम "सेलेक्ट डिस्टिंट टॉप एन सैलरी फ्रॉम एम्प्लॉइज ऑर्डर बाय सैलरी डीईएससी" क्वेरी द्वारा जनरेट किया जाएगा, जो निम्नलिखित परिणाम उत्पन्न करेगा।

वेतन
65500
60500
60000
58500

अगली बाहरी क्वेरी है:"उन कर्मचारियों से मिन (वेतन) चुनें जहां वेतन (पिछली SQL क्वेरी का आउटपुट) है।

वेतन
58500

उपरोक्त परिणाम से, यह सत्यापित होता है कि आवश्यक चौथा उच्चतम वेतन 58500 है।

अंत में, मुख्य प्रश्न कर्मचारियों से चुनें * जहां वेतन =पिछली SQL क्वेरी का आउटपुट है। इस प्रश्न का परिणाम चौथे उच्चतम वेतन वाले कर्मचारियों का परिणाम होगा।

FIRST_NAME वेतन
दीपम 58500

उदाहरण 2:

SELECT * FROM employees WHERE salary = (SELECT MIN(salary) FROM employees WHERE salary IN(SELECT DISTINCT TOP N salary from employees ORDER BY salary DESC ));

उपरोक्त SQL कथन का उपयोग N उच्चतम वेतन वाले कर्मचारियों का विवरण खोजने के लिए किया जाता है।

आइए संक्षेप में उपरोक्त SQL कथन की व्याख्या देखें:

एन =5 पर विचार करें।

जब भी किसी SQL क्वेरी में उप-क्वेरी शामिल होती है, तो याद रखें कि आंतरिक क्वेरी पहले निष्पादित होगी फिर बाहरी क्वेरी निष्पादित की जाएगी।

निम्नलिखित परिणाम "सेलेक्ट डिस्टिंट टॉप एन सैलरी फ्रॉम एम्प्लॉइज ऑर्डर बाय सैलरी डीईएससी" क्वेरी द्वारा जनरेट किया जाएगा, जो निम्नलिखित परिणाम उत्पन्न करेगा।

वेतन
65500
60500
60000
58500
55500

अगली बाहरी क्वेरी है:"उन कर्मचारियों से मिन (वेतन) चुनें जहां वेतन (पिछली SQL क्वेरी का आउटपुट) है।

वेतन
55500

उपरोक्त परिणाम से, यह सत्यापित होता है कि आवश्यक पाँचवाँ उच्चतम वेतन 55500 है।

अंत में, मुख्य प्रश्न कर्मचारियों से चुनें * जहां वेतन =पिछली SQL क्वेरी का आउटपुट है। इस प्रश्न का परिणाम पांचवे उच्चतम वेतन वाले कर्मचारियों का परिणाम होगा।

FIRST_NAME वेतन
प्राची 55500

Row_Num() फ़ंक्शन का उपयोग करके नौवां उच्चतम वेतन

उदाहरण:

SELECT MIN(salary) FROM(SELECT DISTINCT salary FROM employees ORDER  BY salary DESC) WHERE rownum < 3;
  • तीसरे उच्चतम वेतन की गणना करने के लिए, rownum <4
  • . का उपयोग करें
  • दूसरा उच्चतम वेतन की गणना करने के लिए, rownum <3
  • . का उपयोग करें

आउटपुट:

मिनट(वेतन
60500

आइए देखें कि क्वेरी कैसे काम करती है:

चरण 1: क्वेरी में सबक्वेरी का अर्थ है आंतरिक क्वेरी और बाहरी क्वेरी। हम सभी जानते हैं कि जब क्वेरी में सबक्वेरी का उपयोग किया जाता है, तो सबसे पहले आंतरिक क्वेरी को निष्पादित किया जाता है

सबसे पहले, आंतरिक क्वेरी को निष्पादित किया जाएगा फिर बाहरी क्वेरी को आंतरिक क्वेरी द्वारा उत्पादित आउटपुट के आधार पर निष्पादित किया जाएगा:

आंतरिक प्रश्न:

SELECT MIN(salary) FROM(SELECT DISTINCT salary FROM employees ORDER  BY salary DESC) WHERE rownum < 3;

आंतरिक क्वेरी का आउटपुट:

वेतन
65500
60500
60000
58500
55500
54500
50500
50000

जैसा कि हमने क्वेरी में एक अलग कीवर्ड का उपयोग किया है, डुप्लिकेट वेतन समाप्त हो जाएगा। आंतरिक क्वेरी के परिणाम के रूप में अद्वितीय वेतन प्रदर्शित किया जाएगा।

चरण 2: जैसा कि सर्वर एक आंतरिक क्वेरी के साथ किया जाता है, हम नेस्टेड क्वेरी की बाहरी क्वेरी को आंतरिक क्वेरी से प्राप्त आउटपुट में निष्पादित कर रहे हैं

SELECT MIN(salary) FROM(SELECT DISTINCT salary FROM employees ORDER  BY salary DESC) WHERE rownum < 3;

सेलेक्ट मिन (वेतन) FROM (इनर क्वेरी आउटपुट):इनर क्वेरी आउटपुट से न्यूनतम वेतन का चयन करें, जो कि 50000 है और 50000 दूसरा सबसे ज्यादा वेतन नहीं है, जिसके कारण हमने राउनम <3 का उपयोग किया है, जो की संख्या देगा ऊपर से पंक्तियाँ जो 3 से कम हैं, का अर्थ केवल 2 है।

WHERE Rownum का आउटपुट <3:

वेतन
65500
60500

चरण 3: क्वेरी का अंतिम भाग, जो कि SELECT MIN(वेतन) है (WHERE rownum का आउटपुट<3):

क्वेरी का अंतिम आउटपुट:

वेतन
60500

60500 कर्मचारियों की मेज पर दूसरा सबसे बड़ा वेतन है।

रैंक रैंक () फ़ंक्शन का उपयोग करके नौवां उच्चतम वेतन

उदाहरण:

SELECT * FROM(SELECT First_Name, salary, dense_rank()      OVER(ORDER BY salary DESC) rank FROM employees) WHERE rank =&num;

- तीसरे उच्चतम वेतन की गणना करने के लिए, संख्या =3 का उपयोग करें

- दूसरे उच्चतम वेतन की गणना करने के लिए, संख्या =2 का उपयोग करें

हम num =2 के लिए जाएंगे।

अंतिम आउटपुट:

प्रथम_नाम वेतन रैंक
राजेश 60500 2

आंतरिक क्वेरी का आउटपुट:

SELECT(First_Name, Salary, dense_rank() OVER(ORDER BY salary DESC) Rank FROM employees

Dense_rank () फ़ंक्शन आरोही क्रम में पंक्तियों के क्रम समूह में प्रत्येक पंक्ति की रैंक की गणना करता है और रैंक को एक संख्या के रूप में लौटाता है। रैंक 1 से शुरू होती है और इसी तरह।

यदि दो या दो से अधिक पंक्तियों का वेतन समान है, तो यह सभी पंक्तियों को समान रैंक प्रदान करता है।

आंतरिक क्वेरी का आउटपुट:

प्रथम_नाम वेतन रैंक
वैभवी 65500 1
भावेश 65500 1
राजेश 60500 2
वैभव 60000 3
रुचिका 60000 3
दीपम 58500 4
प्राची 55500 5
प्रानोटी 55500 5
ARCHIT 55500 5
अश्विनी 54500 6
निखिल 50500 7
अनुजा 50500 7
रुचिका 50000 8

आउटपुट में, हम डुप्लिकेट वेतन के लिए समान रैंकिंग देख सकते हैं।

चरण 2: जैसा कि सर्वर एक आंतरिक क्वेरी के साथ किया जाता है, हम नेस्टेड क्वेरी की बाहरी क्वेरी को आंतरिक क्वेरी से प्राप्त आउटपुट में निष्पादित कर रहे हैं

SELECT * FROM(SELECT(First_Name, Salary, dense_rank() OVER(ORDER BY salary DESC) rank FROM employees) WHERE rank = &num;

चयन करें * से उन सभी पंक्तियों का चयन करेगा जो दूसरी उच्चतम वेतन नहीं हैं क्योंकि हमने रैंकरैंक का उपयोग किया है जहां num =2 उपयोगकर्ता द्वारा num के लिए दर्ज किए गए मान के अनुसार मिलान करने वाली पंक्तियां देगा।

जैसा कि हमने num =2 का उपयोग किया, आउटपुट होगा

प्रथम_नाम वेतन रैंक
राजेश 60500 2
  • तीसरा वेतन सेट संख्या =3 खोजने के लिए,
  • चौथा वेतन सेट संख्या =4, और इसी तरह खोजने के लिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. आईआरआई कार्यक्षेत्र में डेटा वर्गीकरण

  2. SQL SUM () शुरुआती के लिए

  3. टैप एंड पार्क:एक पार्किंग ऐप डेटा मॉडल

  4. अधिक शोप्लान सुधार? जी बोलिये!

  5. AWS RDS में सामान्य लॉग और त्रुटि लॉग को कैसे सक्षम करें