【问题标题】:how to display the name of the departments that has the least student count如何显示学生人数最少的部门的名称
【发布时间】:2017-07-25 06:45:59
【问题描述】:

如何编写查询以显示学生人数最少的部门的名称。按部门名称升序排列结果

【问题讨论】:

  • 没有图片,谢谢。见meta.stackoverflow.com/questions/333952/…
  • 完成你的作业我们能得到什么?你试过写任何查询吗?如果是,那么您的查询中有什么问题。
  • 您的目标是哪个数据库,Oracle 还是 MySQL?如果是oracle,是哪个版本的数据库?进行[top-n] 查询的语法会有所不同。

标签: mysql sql database oracle


【解决方案1】:
select d.department_name from 
(select dd.department_name, count(di.department_id) as id from student di
join department dd on di.department_id=dd.department_id group by dd.department_name) d,
(select min(count(*)) as new from student group by department_id) d2
where d.id=d2.new;

【讨论】:

    【解决方案2】:
    select d.department_name from Department d, Student s where 
    d.department_id = s.department_id
    group by d.department_name
    having count(s.student_id)<=all
    (select count(s.student_id) from Department d, Student s where 
    d.department_id = s.department_id
    group by d.department_name)
    order by department_name;
    

    试试这个。

    【讨论】:

      【解决方案3】:
      select d.department_id, d.department_name 
      from Department d
      join Student s on d.department_id = s.department_id
      group by d.department_id
      having count(s.student_id) = (select min(count(s2.student_id))
                                    from student s2 
                                          join department d2 
                                          on s2.department_id = d2.department_id 
                                     group by d2.department_id) 
      order by d.department_name
      

      您必须连接 2 个表才能获得所需的信息。

      您还必须按所选信息对他们进行分组,以便统计学生人数。

      最后,您设置条件。需要一个子查询来检索最少学生数。

      【讨论】:

        【解决方案4】:
        select department_name
          from Department
            join Student
             on Department.department_id=Student.department_id
               having count(*) in
                ( select min(count(*)) from Student group by department_id)
                group by Department.department_id,department_name
                order by department_name asc;
        

        【讨论】:

        • 您能解释一下为什么这是一个可行的解决方案吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-18
        相关资源
        最近更新 更多