# 根据上面这三个表格,查询每个员工的绩效情况,包含的字段:员工 ID、员工姓名、该员工在 2024 年上半年的绩效评分, 该员工在所属项目排名,该员工所属部门名称,该员工所属项目名称。查询出来的数据按照项目ID升序排列,再按照在所属项目的绩效排名升序排列,排名一致的按照员工ID升序排列。
# employee_id: 员工的唯一标识符。
# employee_name: 员工的姓名。
# first_half_2024_score: 2024 年上半年的绩效评分。上半年 [ 2024-01-01——2024-07-01)
# project_group_rank: 在所属项目的绩效排名。
# department: 所属部门。
# project_group: 所属项目组。
select e.employee_id employee_id
,employee_name
,performance_score first_half_2024_score
,row_number() over(partition by pj.project_id order by performance_score desc,e.employee_id ASC) project_group_rank
,department
,project_name project_group
from performance p 
left join projects pj
on p.project_id=pj.project_id
left join employees e
on p.employee_id=e.employee_id
where start_date between '2024-01-01' and '2024-07-01'

order by pj.project_id,project_group_rank ,employee_id;


这个还蛮简单的。只需要开个窗就好了,没有子查询和分组