以下是两个表,即客户和部门。我很难获得输出。
我想写一个查询,该查询只显示拥有最多员工数的部门名称。
答案应该是这样的......
请帮我写一下这个问题。
答案 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”子句是错误的。