-- using window partition to group by department WITH cte_emp AS ( select t.name, t.deptid, t.salary, td.deptname, rank()OVER ( PARTITION BY t.deptid ORDER BY salary desc) highestsalaryRank --penggunaan rank over karena di partisi sesuai deptid, jadi hasil salary lebih terstruktur, --dan duplikat di rank over dihitung sebagai value --penggunaan dense_rank, maka duplikat tidak akan di anggap value baru, jadi tetap teroganisir secara berurutan FROM tblemployee t join tbldepartment td on t.deptid = td.deptid ) SELECT * FROM cte_emp;