Oracle
 sql >> база данни >  >> RDS >> Oracle

Напишете заявка, за да намерите името на студента(ите), който е получил максимална оценка по Софтуерно инженерство. Сортирайте резултата въз основа на име

Освен факта, че използвате остарял скрит синтаксис със запетая за обединения, вие също така комбинирате колони от таблиците по грешен начин в подзаявката.

subject_name е колона от subject което няма нищо общо с отношението на ученика към оценките. Така че оценката може да бъде съединена отделно с предмет, докато се определят student_ids с най-висока оценка. След това можем да получим името на ученика, използвайки тези student_ids

И така, в Oracle 12c и по-нови можете да направите

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;  

За предишни версии можете да използвате dense_rank или 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. UTL_FILE.FOPEN() процедурата не приема пътя за директория?

  2. Бавна миграция към облак

  3. трябва да групирате записи въз основа на съвпадащи сторнирания

  4. Как да преминавате през колони в курсор на oracle pl/sql

  5. Вмъкване на изображение в BLOB Oracle 10g