Find Consistently Improving Employees - LeetCode
Can you solve this real interview question? Find Consistently Improving Employees - Table: employees   +-------------+---------+ | Column Name | Type    | +-------------+---------+ | employee_id | int     | | name        | varchar | +-------------+---------+ employee_id is the unique identifier for this table. Each row contains information about an employee.   Table: performance_reviews   +-------------+------+ | Column Name | Type | +-------------+------+ | review_id   | int  | | employee_id | int  | | review_date | date | | rating      | int  | +-------------+------+ review_id is the unique identifier for this table. Each row represents a performance review for an employee. The rating is on a scale of 1-5 where 5 is excellent and 1 is poor.   Write a solution to find employees who have consistently improved their performance over their last three reviews.   * An employee must have at least 3 review to be considered  * The employee's last 3 reviews must show strictly increasing ratings (each review better than the previous)  * Use the most recent 3 reviews based on review_date for each employee  * Calculate the improvement score as the difference between the latest rating and the earliest rating among the last 3 reviews  Return the result table ordered by improvement score in descending order, then by name in ascending order.  The result format is in the following example.     Example:  Input:  employees table:   +-------------+----------------+ | employee_id | name           | +-------------+----------------+ | 1           | Alice Johnson  | | 2           | Bob Smith      | | 3           | Carol Davis    | | 4           | David Wilson   | | 5           | Emma Brown     | +-------------+----------------+   performance_reviews table:   +-----------+-------------+-------------+--------+ | review_id | employee_id | review_date | rating | +-----------+-------------+-------------+--------+ | 1         | 1           | 2023-01-15  | 2      | | 2         | 1           | 2023-04-15  | 3      | | 3         | 1           | 2023-07-15  | 4      | | 4         | 1           | 2023-10-15  | 5      | | 5         | 2           | 2023-02-01  | 3      | | 6         | 2           | 2023-05-01  | 2      | | 7         | 2           | 2023-08-01  | 4      | | 8         | 2           | 2023-11-01  | 5      | | 9         | 3           | 2023-03-10  | 1      | | 10        | 3           | 2023-06-10  | 2      | | 11        | 3           | 2023-09-10  | 3      | | 12        | 3           | 2023-12-10  | 4      | | 13        | 4           | 2023-01-20  | 4      | | 14        | 4           | 2023-04-20  | 4      | | 15        | 4           | 2023-07-20  | 4      | | 16        | 5           | 2023-02-15  | 3      | | 17        | 5           | 2023-05-15  | 2      | +-----------+-------------+-------------+--------+   Output:   +-------------+----------------+-------------------+ | employee_id | name           | improvement_score | +-------------+----------------+-------------------+ | 2           | Bob Smith      | 3                 | | 1           | Alice Johnson  | 2                 | | 3           | Carol Davis    | 2                 | +-------------+----------------+-------------------+   Explanation:   * Alice Johnson (employee_id = 1):    * Has 4 reviews with ratings: 2, 3, 4, 5    * Last 3 reviews (by date): 2023-04-15 (3), 2023-07-15 (4), 2023-10-15 (5)    * Ratings are strictly increasing: 3 → 4 → 5    * Improvement score: 5 - 3 = 2  * Carol Davis (employee_id = 3):    * Has 4 reviews with ratings: 1, 2, 3, 4    * Last 3 reviews (by date): 2023-06-10 (2), 2023-09-10 (3), 2023-12-10 (4)    * Ratings are strictly increasing: 2 → 3 → 4    * Improvement score: 4 - 2 = 2  * Bob Smith (employee_id = 2):    * Has 4 reviews with ratings: 3, 2, 4, 5    * Last 3 reviews (by date): 2023-05-01 (2), 2023-08-01 (4), 2023-11-01 (5)    * Ratings are strictly increasing: 2 → 4 → 5    * Improvement score: 5 - 2 = 3  * Employees not included:    * David Wilson (employee_id = 4): Last 3 reviews are all 4 (no improvement)    * Emma Brown (employee_id = 5): Only has 2 reviews (needs at least 3)  The output table is ordered by improvement_score in descending order, then by name in ascending order.
https://leetcode.com/problems/find-consistently-improving-employees/description/