下面是两张表,客户和部门。我非常努力地获得输出。
我想编写只显示员工人数最多的部门名称的查询。
答案应该是这样的...
请帮我写查询。
我建议使用子查询,然后从该查询中进行选择。使用外部选择,您可以按员工人数排序,然后将其限制为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
我在 Oracle 10g 数据库中创建了 cus & dep 表并成功测试了我的代码。您使用的是什么数据库,您可以发布您的代码。有错误消息显示您的“订购依据”条款是错误的。
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;