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

Tulis kueri untuk menemukan nama siswa yang mendapat nilai maksimum dalam Rekayasa Perangkat Lunak. Urutkan hasil berdasarkan nama

Terlepas dari kenyataan bahwa Anda menggunakan sintaks koma implisit yang sudah ketinggalan zaman untuk bergabung, Anda juga menggabungkan kolom tabel dengan cara yang salah di sub kueri.

subject_name adalah kolom subject yang tidak ada hubungannya dengan hubungan siswa dengan nilai. Jadi, nilai dapat digabungkan secara terpisah dengan mata pelajaran sambil menentukan id_siswa dengan nilai tertinggi. Kami kemudian dapat memperoleh nama siswa menggunakan student_id tersebut

Jadi, Di Oracle 12c dan di atasnya, Anda bisa melakukan

SELECT s.student_name
   FROM student s
WHERE s.student_id IN ( SELECT m.student_id
                        FROM mark m JOIN subject su 
                         ON su.subject_id = m.subject_id
                        WHERE lower(su.subject_name) = 'software engineering'
                           ORDER BY m.value DESC
                        FETCH FIRST 1 ROWS WITH TIES ) order by 1;  

Untuk versi sebelumnya, Anda dapat menggunakan dense_rank atau rank

SELECT s.student_name
   FROM student s
WHERE s.student_id IN ( SELECT student_id
                        FROM ( SELECT m.*,DENSE_RANK() OVER(
                                    ORDER BY m.value DESC
                               ) AS rnk
                               FROM mark m  JOIN subject su 
                                ON su.subject_id = m.subject_id
                        WHERE lower(su.subject_name) = 'software engineering'
                    ) WHERE rnk = 1
               ) order by 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. Dapatkan BLOB dari Kolom BFILE di Oracle

  2. Menggunakan rownum dalam pernyataan SQL Oracle dalam kombinasi dengan urutan demi klausa

  3. Sintaks SQL untuk kueri pembaruan dengan koneksi sebelumnya

  4. Apakah substr atau LIKE lebih cepat di Oracle?

  5. Hapus / potong ORA