Sql 使用两个表显示数据的最高值
我有两个表employee和department,其中包含以下数据Sql 使用两个表显示数据的最高值,sql,oracle10g,Sql,Oracle10g,我有两个表employee和department,其中包含以下数据 emplyee table empid Ename deptid 1 Ajay 1 2 Vijay 1 3 sanjay 2 4 rajiv 1 5 rohit 2 6 sohit 3 部门表 deptid deptname 1 HR 2
emplyee table
empid Ename deptid
1 Ajay 1
2 Vijay 1
3 sanjay 2
4 rajiv 1
5 rohit 2
6 sohit 3
部门表
deptid deptname
1 HR
2 IT
3 A/C
我的问题是如何显示员工人数最多(第二名或第N名)的部门名称。
请帮助我,我是SQl初学者。您需要使用内部联接和group by子句,然后可以使用order by按您喜欢的方式对数据进行排序
SELECT d.deptname,
COUNT(e.Ename) AS NoOfEmployees
FROM dept d
INNER JOIN emplyee e ON d.deptid = e.deptid
GROUP BY d.deptid
ORDER BY NoOfEmployees
在这里,RN=2
最后我们将找到第二大部门。根据需要将其更改为1,2,3,4,…
这将为您提供从最高计数到最低计数的公司名称(根据要求)
您还可以按部门名称进行订购,以便按字母顺序列出员工数量相同的部门
如果您希望同时显示行号(如1、2、3…),那么您也可以添加SQL“Over”子句。那么,您可以向我们展示您的尝试吗?我以前从未见过SQLFIDLE,这是一个很好的操作。我也使用了您的模式来重新测试我的查询。今天学到了一些新东西,谢谢valex。
SELECT *
FROM
(
SELECT T.*,ROW_NUMBER() OVER (ORDER BY EmpCount DESC) RN
FROM
(
SELECT d.deptid,d.deptname,count(*) EmpCount
FROM department d
JOIN emplyee e on d.deptid=e.deptid
GROUP BY d.deptid,d.deptname
) T
) T1 WHERE RN=2
select d.deptname
from department d
inner join employee e on e.deptid = d.deptid
group by d.deptname
order by count(d.deptname) desc