Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Contoh database Oracle SQL

Anda tidak memfilter kueri Anda, itulah sebabnya Anda menampilkan semua karyawan.

Ini akan memfilter karyawan yang berpenghasilan kurang dari maksimum untuk dept/grade mereka:

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)

Anda masih akan menemukan duplikat karena misalnya, dua orang penjualan mendapatkan gaji maksimal untuk kelas 2 (Martin dan Ward mendapatkan 1250). Entah ini dapat diterima atau Anda memerlukan beberapa kriteria lain untuk hanya memilih salah satunya.

Anda dapat menggunakan row_number fungsi analitik untuk memastikan bahwa hanya satu baris yang dikembalikan oleh kelas/dept (perhatikan bahwa Oracle akan memilih secara sewenang-wenang satu baris ketika ada duplikat) :

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. Hapus tiba-tiba butuh waktu lama

  2. prosedur pembuatan oracle sql untuk menunjukkan peringkat mingguan

  3. menggunakan atau di mana klausa untuk masalah kolom tipe tanggal jika dibandingkan dengan sysdate di Oracle

  4. Kebingungan Zona Waktu Oracle 10g

  5. Bagaimana Anda menginstal Perl DBD ::Oracle di OSX Snow Leopard 10.6