with t as
(select
    e.employee_id,
    e.employee_name,
    pe.performance_score as first_half_2024_score,
    e.department,
    pr.project_id,
    pr.project_name as project_group
from employees e
left join performance pe on e.employee_id=pe.employee_id
left join projects pr on pe.project_id=pr.project_id
where year(pr.start_date)=2024 and month(pr.start_date) between 1 and 6)

select 
    employee_id,
    employee_name,
    first_half_2024_score,
    row_number() over(partition by project_group order by first_half_2024_score desc) as project_group_rank,
    department,
    project_group
from t
order by project_id,project_group_rank,employee_id;