0

我有两张表员工和部门,其中包含以下数据

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 中的初学者。

4

3 回答 3

0
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

RN=2最后,我们将在这里找到第二大部门。根据需要更改它1,2,3,4,...

SQLFiddle 演示

于 2013-09-12T14:03:29.253 回答
0
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

这将只为您提供公司名称(根据要求),按从高到低的顺序排列。

您还可以按部门名称排序,以便具有相同员工人数的部门按字母顺序列出。

如果您还想显示行号(如 1、2、3...),那么您也可以添加 SQL“Over”子句。

于 2013-09-12T14:06:04.213 回答
0

您需要使用内部连接和 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
于 2013-09-12T13:55:36.477 回答