各プロジェクトで最も経験豊富な従業員(最大のexperience_years)を見つけます
次の2つのテーブル
プロジェクトがあります
pro_id emp_id
1 1
1 2
1 3
2 1
2 4
社員
emp_id name exp_year
1 Lisi 3
2 Wangwu 2
3 Zhaoliu 3
4 Zhangsan 2
結果は次のとおりです。
pro_id emp_id exp_year
1 1 Lisi
1 3 Zhaoliu
2 1 Lisi
解決する:
select pro_id
,emp_id
,name
from (
select a.pro_id
,a.emp_id
,b.name
,b.exp_year
,rank() over(partition by a.pro_id order by b.exp_year desc) as rn
from project a
left join employee b
on a.emp_id = b.emp_id
)a
where rn = 1
;
pro_id emp_id name
1 1 Lisi
1 3 Zhaoliu
2 1 Lisi
卓注:
建表和データcreate table project(pro_id int、emp_id int);
プロジェクト値に挿入(1,1);
プロジェクト値に挿入します(1,2);
プロジェクト値に挿入します(1,3);
プロジェクトvalues(2,1);に挿入します。
プロジェクト値に挿入します(2,4);
テーブルemployee(emp_id int、name varchar(30)、exp_year int);を作成します。
従業員の値に挿入します(1、 'Lisi'、3);
従業員の値に挿入します(2、 'Wangwu'、2);
従業員の値に挿入します(3、 'Zhaoliu'、3);
従業員の値に挿入します(4、 'Zhangsan'、2);