【问题标题】:to show the name of the department which has maximum student count显示学生人数最多的部门的名称
【发布时间】:2017-06-26 14:37:48
【问题描述】:

一共有两张表,一张是“Department”,里面有department_name、department_block_number和department_id(主键),另一个是“Student”,里面有student_name、student_id和department_id(外键)。因此,基于这种情况,我们必须显示学生人数最多的部门的名称。

我已经尝试了一些东西,你可以在下面找到我的代码,但它没有按预期工作,所以你能帮我纠正一下吗?

select u 
from 
    (select count(s.student_id) cnt,d.department_name u 
    from department d 
    join student s using(department_id) 
    group by d.department_name 
    where cnt==(select max(cntt) from (select
        count(ss.student_id) cntt,dd.department_name 
        from department dd 
        join student ss using(department_id) 
        group by dd.department_name)
    )
);

注意:这个问题属于子查询部分。

【问题讨论】:

    标签: mysql sql database rdbms


    【解决方案1】:

    你只需要按降序计算所有部门的所有学生,然后限制到第一个结果:

    SELECT a.`department_name`
        count(b.`student_id`) as `num_students`
    FROM `Department` a
    JOIN `Student` b
    ON a.`department_id` = b.`department_id`
    GROUP BY `a.department_id`
    ORDER BY count(b.`student_id`) DESC
    LIMIT 1;
    

    【讨论】:

    • 事实上,我应该告诉你,我在子查询部分发现了这个问题。另外,最初我尝试了“Select TOP 1 .....”,这个“Limit 1”等等,但代码没有被接受。所以无论如何,除非我们使用子查询,否则它不会被接受。那个约束就在那里。
    • “我应该告诉你我在子查询部分发现了这个问题”?这是家庭作业吗?
    • 请查看帮助部分以获取有关如何提出问题以及适合 SO 的问题类型的信息。
    • 对不起,我问错了什么。我尽可能地尝试。您还可以在上面看到我尝试过的内容。然而,我无法做到。你能帮帮我吗?
    • 您可以尝试设置 SQL Fiddle,或编辑您的问题并提供表架构和一些(少量)示例数据。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多