+---------------+---------+
| Column Name | Type |
+---------------+---------+
| emp_id | int |
| firstname | varchar |
| lastname | varchar |
| salary | varchar |
| department_id | varchar |
+---------------+---------+
(emp_id, salary) is the primary key (combination of columns with unique values) for this table.
Each row contains employees details and their yearly salaries, however, some of the records are old and contain outdated salary information.
Write a solution to find the current salary of each employee assuming that salaries increase each year. Output their emp_id, firstname, lastname,
salary, and department_id.
Return the result table ordered by emp_id in ascending order .
Input:Salary table:+--------+-----------+----------+--------+---------------+| emp_id | firstname | lastname | salary | department_id |+--------+-----------+----------+--------+---------------+|1| Todd | Wilson |110000| D1006 ||1| Todd | Wilson |106119| D1006 ||2| Justin | Simon |128922| D1005 ||2| Justin | Simon |130000| D1005 ||3| Kelly | Rosario |42689| D1002 ||4| Patricia | Powell |162825| D1004 ||4| Patricia | Powell |170000| D1004 ||5| Sherry | Golden |44101| D1002 ||6| Natasha | Swanson |79632| D1005 ||6| Natasha | Swanson |90000| D1005 |+--------+-----------+----------+--------+---------------+Output: +--------+-----------+----------+--------+---------------+| emp_id | firstname | lastname | salary | department_id |+--------+-----------+----------+--------+---------------+|1| Todd | Wilson |110000| D1006 ||2| Justin | Simon |130000| D1005 ||3| Kelly | Rosario |42689| D1002 ||4| Patricia | Powell |170000| D1004 ||5| Sherry | Golden |44101| D1002 ||6| Natasha | Swanson |90000| D1005 |+--------+-----------+----------+--------+---------------+****Explanation:
- emp_id 1 has two records with a salary of 110000,106119out of these 110000is an updated salary(Assuming salary is increasing each year)- emp_id 2 has two records with a salary of 128922,130000out of these 130000is an updated salary.- emp_id 3 has only one salary record so that is already an updated salary.- emp_id 4 has two records with a salary of 162825,170000out of these 170000is an updated salary.- emp_id 5 has only one salary record so that is already an updated salary.- emp_id 6 has two records with a salary of 79632,90000out of these 90000is an updated salary.
SELECT emp_id, firstname, lastname, salary, department_id
FROM Salary s1
WHERECAST(salary AS UNSIGNED) = (
SELECTMAX(CAST(salary AS UNSIGNED))
FROM Salary s2
WHERE s2.emp_id = s1.emp_id
);
1
2
3
4
5
6
7
SELECT emp_id, firstname, lastname, salary, department_id
FROM (
SELECT*,
ROW_NUMBER() OVER (PARTITION BY emp_id ORDERBY salary::int DESC) AS rn
FROM Salary
) t
WHERE rn =1;