Mysql Sql查询以联接两个表以获得最终输出

Mysql Sql查询以联接两个表以获得最终输出,mysql,sql,database,oracle,Mysql,Sql,Database,Oracle,下面是两个表,客户和部门。我正在努力获得输出 我想写一个只显示员工人数最多的部门名称的查询 答案应该是这样的 请帮助我编写查询。我建议使用子查询,然后从该查询中选择。通过外部选择,您可以按员工数量订购,然后将其限制为1。这将为您提供顶级部门,但也有修改的灵活性,以便为您提供顶级部门数量的列表 SELECT Dep_Name FROM ( SELECT d.Dep_Name, COUNT(*) AS `count` FROM Department

下面是两个表,客户和部门。我正在努力获得输出

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

答案应该是这样的


请帮助我编写查询。

我建议使用子查询,然后从该查询中选择。通过外部选择,您可以按员工数量订购,然后将其限制为
1
。这将为您提供顶级部门,但也有修改的灵活性,以便为您提供顶级部门数量的列表

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

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

在此之前您做了什么?在您向我们表示感谢之前,我们无法帮助您NewFurnity。。。它的工作非常棒。。。你一分钟就解决了我的问题。。。非常感谢你。。。你太棒了……:)@没问题!另外,我忘了提到——如果您想要一个部门及其员工的完整列表,您只能单独运行内部查询。也可能很有用=]您没有真正取消子查询。只需将
按计数排序(*)DESC LIMIT 1
放在当前子查询的末尾即可。@Dems感谢您的提示;我想得太多了。我也更新了您的想法-再次感谢=]
            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;