基于Mgr_ID的每组的第2个最高记录,包括经理组(Null组) [英] 2nd Highest record from each group based on Mgr_ID including Manager group (Null group)

查看:87
本文介绍了基于Mgr_ID的每组的第2个最高记录,包括经理组(Null组)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

TableName:EMP_MGR

TableName: EMP_MGR

Emp_ID                 Emp_Name              Salary                      Mgr_ID
1                      Aman                  45000                        NULL
2                      Deepak                35000                           1
3                      Pankaj                32000                           1
4                      Sapna                 25000                           1
5                      Rajan                 50000                        NULL
6                      Nupur                 18000                           5
7                      Anamika               18000                           5
8                      Preet                 22000                        NULL
9                      Shalu                 27000                        NULL
10                    Jyoti                  12000                           9
11                    Omesh                  25000                           9
12                    Rakesh                 21000                           9







SELECT MAX(salary),E1.mgr_id FROM EMP_MGR E1,
(SELECT MAX(salary) AS sal,mgr_id FROM EMP_MGR GROUP BY mgr_id ) E2 
WHERE E1.salary<e2.sal and="" e1.mgr_id="E2.mgr_id"

group =by = mode =hold/>

我想从每个组中找到第二高的记录,包括经理(空组)

预期结果:

group="" by="" mode="hold" />
I want to find 2nd Highest record from each group including Managers(NULL group)
Expected Result:

Mgr_ID           Salary
NULL              45000
1                     32000
5                     18000
9                     15000

推荐答案

Not确定下面对你没问题。只需尝试一次......

Not sure below would be fine for you or not. Just try once...
;WITH CTE
(
    SELECT salary,mgr_id FROM EMP_MGR GROUP BY mgr_id
)
SELECT MAX(SALARY), mgr_id FROM CTE
WHERE SALARY <> (SELECT MAX(SALARY) FROM CTE)


select * from(select *,rank()over(mgd_id的mgr_id顺序除以)作为来自emp_mgr的rno)为T,其中rno = 2
select * from(select *, rank() over(partition by mgr_id order by mgrid desc) as rno from emp_mgr) as T where rno = 2


这篇关于基于Mgr_ID的每组的第2个最高记录,包括经理组(Null组)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆