Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用两个表显示数据的最高值_Sql_Oracle10g - Fatal编程技术网

Sql 使用两个表显示数据的最高值

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

我有两个表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            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