Sql查询加入两个表进行最终输出

时间:2012-10-04 14:13:24

标签: mysql sql database oracle

以下是两个表,即客户和部门。我很难获得输出。

我想写一个查询,该查询只显示拥有最多员工数的部门名称。

enter image description here

答案应该是这样的......

enter image description here

请帮我写一下这个问题。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;

答案 2 :(得分:0)

我创造了cus&amp;在Oracle 10g数据库中删除表并成功测试了我的代码。 您使用的是什么数据库,是否可以发布代码。 有错误消息显示您的“Order by”子句是错误的。