-1

编写查询以显示软件工程中表现最好的人的姓名、部门名称和分数。解决方案必须在子查询中实现。预期结果显示单行。

我尝试了下面的代码

   select student_name, department_name,
    mark
   from student s, department d,
   (select max(value)
    from mark
    where subject_id=
                     ( select subject_id
                       from subject sb
                       where lower(subject_name)='software engineering')
    group by student_id
    )m1
    where s.department_id=d.department_id and
          s.student_id=m1.student_id
    order by department_name;

但是这段代码在 m1.student_id 中无效标识符的第 12 行给出了错误。

请帮忙。

4

1 回答 1

0

您需要在子查询中添加 student_id:

select 
    student_name, department_name,
    mark    
from 
    student s, department d,    
    (select student_id,max(value)
     from mark
     where subject_id = (select subject_id
                         from subject sb
                         where lower(subject_name)='software engineering')
     group by student_id) m1
where 
    s.department_id = d.department_id 
    and s.student_id = m1.student_id
order by 
    department_name;
于 2019-05-31T18:20:44.693 回答