Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Cơ sở dữ liệu mẫu SQL của Oracle

Bạn không lọc truy vấn của mình, đây là lý do tại sao bạn hiển thị tất cả các nhân viên.

Điều này sẽ lọc những nhân viên kiếm được ít hơn mức tối đa cho loại nợ / cấp của họ:

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)

Bạn vẫn sẽ tìm thấy các bản sao vì ví dụ:hai người bán hàng kiếm được mức lương tối đa cho bậc 2 (cả Martin và Ward đều kiếm được 1250). Điều này có thể chấp nhận được hoặc bạn cần một số tiêu chí khác để chỉ chọn một trong số chúng.

Bạn có thể sử dụng row_number hàm phân tích để đảm bảo rằng chỉ một hàng được trả về theo cấp / loại (lưu ý rằng Oracle sẽ chọn tùy ý một hàng khi có trùng lặp):

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. Cách liệt kê tất cả các bảng được sử dụng trong một thủ tục được lưu trữ cụ thể trong oracle

  2. Cách lấy dữ liệu theo tuần trong Oracle

  3. Oracle - nhiều truy vấn hơn trong một kết quả

  4. Oracle Create View vấn đề

  5. Số hàng tối đa trong bảng lồng nhau oracles là bao nhiêu