0

下面是两张表,客户和部门。我非常努力地获得输出。

我想编写只显示员工人数最多的部门名称的查询。

在此处输入图像描述

答案应该是这样的...

在此处输入图像描述

请帮我写查询。

4

3 回答 3

2

我建议使用子查询,然后从该查询中进行选择。使用外部选择,您可以按员工人数排序,然后将其限制为1. 这将为您提供最高部门,但也可以灵活地修改为您提供x最高部门的数量列表。

SELECT Dep_Name FROM (
    SELECT
        d.Dep_Name, COUNT(*) AS `count`
    FROM
        Departments d
        JOIN Employees e ON e.Dep_id = d.Dep_id
    GROUP BY
        d.Dep_id
) AS q

ORDER BY `count` DESC
LIMIT 1

更新

根据@Dems 的评论,您实际上可以在没有子查询的情况下处理这个问题:

SELECT
    d.Dep_Name
FROM
    Departments d
    JOIN Employees e ON e.Dep_id = d.Dep_id
GROUP BY
    d.Dep_id
ORDER BY
    COUNT(*) DESC
LIMIT 1
于 2012-10-04T14:23:23.883 回答
0

我在 Oracle 10g 数据库中创建了 cus & dep 表并成功测试了我的代码。您使用的是什么数据库,您可以发布您的代码。有错误消息显示您的“订购依据”条款是错误的。

于 2012-10-05T17:35:13.337 回答
0
            SELECT *
            FROM
            (
                SELECT
                  d.dep_id,
                  d.dep_name,
                  count(c.cus_id) cusCount
                FROM
                  cus c,
                  dep d
                WHERE
                  c.dep_id = d.dep_id
                GROUP BY
                  d.dep_id,d.dep_name
                ORDER BY
                  cusCount desc)
            WHERE
              ROWNUM = 1;
于 2012-10-04T17:16:33.443 回答