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

Oracle SQL नमूना डेटाबेस

आप अपनी क्वेरी को फ़िल्टर नहीं कर रहे हैं, इसलिए आपने सभी कर्मचारियों को प्रदर्शित किया है।

यह उन कर्मचारियों को फ़िल्टर करेगा जो अपने विभाग/ग्रेड के लिए अधिकतम से कम कमाते हैं:

SELECT ename, salgrade.grade, dept.dname
  FROM emp, salgrade, dept
 WHERE emp.sal BETWEEN salgrade.losal AND salgrade.hisal
   AND emp.deptno = dept.deptno
   AND emp.sal = (SELECT MAX(sal)
                    FROM emp emp_in, salgrade grade_in
                   WHERE emp_in.sal BETWEEN grade_in.losal AND grande_in.hisal
                     AND emp_in.deptno = emp.deptno
                     AND grade_in.losal = salgrade.losal)

आपको अभी भी डुप्लीकेट मिलेंगे क्योंकि उदाहरण के लिए, बिक्री में दो लोग ग्रेड 2 के लिए अधिकतम वेतन अर्जित करते हैं (मार्टिन और वार्ड दोनों 1250 कमाते हैं)। या तो यह स्वीकार्य है या उनमें से केवल एक को चुनने के लिए आपको कुछ अन्य मानदंडों की आवश्यकता है।

आप row_number . का उपयोग कर सकते हैं विश्लेषणात्मक कार्य यह सुनिश्चित करने के लिए कि ग्रेड/विभाग द्वारा केवल एक पंक्ति लौटा दी जाती है (ध्यान दें कि डुप्लिकेट होने पर Oracle मनमाने ढंग से एक पंक्ति का चयन करेगा):

SELECT * FROM (
  SELECT ename, salgrade.grade, dept.dname,
         row_number() OVER (PARTITION BY dept.deptno, salgrade.grade 
                            ORDER BY emp.sal DESC) rnk
    FROM emp, salgrade, dept
   WHERE emp.sal BETWEEN salgrade.losal AND salgrade.hisal
     AND emp.deptno = dept.deptno
) WHERE rnk = 1;

ENAME       GRADE DNAME          RNK
---------- ------ -------------- ---
MILLER          2 ACCOUNTING       1 
CLARK           4 ACCOUNTING       1 
KING            5 ACCOUNTING       1 
ADAMS           1 RESEARCH         1 
FORD            4 RESEARCH         1 
JAMES           1 SALES            1 
MARTIN          2 SALES            1 
ALLEN           3 SALES            1 
BLAKE           4 SALES            1 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle IN कंडीशन के अंदर एक स्ट्रिंग का उपयोग करता है

  2. JSON_TABLE का उपयोग करके Oracle JSON कॉलम से परिणाम के रूप में कुंजी मान कैसे प्राप्त करें

  3. मैं Oracle JDBC में संग्रहीत प्रक्रिया में परिभाषित IN OUT CLOB पैरामीटर का उपयोग कैसे करूं?

  4. Oracle:जब उपयोगकर्ता डेटा के किसी आइटम को बदलने के लिए निर्देश जारी करता है तो Oracle पूर्ववत ब्लॉक में परिवर्तन का वर्णन करते हुए एक फिर से परिवर्तन वेक्टर क्यों बनाता है

  5. पंक्ति में त्रुटि:PL/SQL:SQL कथन पर ध्यान नहीं दिया गया। पैकेज बॉडी बनाते/बदलते समय