LeetCode solutions

3767. Find Students Who Improved

My accepted SQL solution to LeetCode problem 3767, Find Students Who Improved, running in 280ms.

  • Difficulty: Medium
  • SQL
  • Runtime 280ms
  • Memory 0.0B

Read the problem on LeetCode View on GitHub

SQL

Accepted on LeetCode — runtime 280ms, memory 0.0B, accepted 2025-12-31.

sql
# Write your MySQL query statement below
WITH first_scores AS (
    SELECT student_id, subject, score AS first_score, exam_date
        FROM Scores s1
            WHERE exam_date = (
                    SELECT MIN(exam_date) FROM Scores s2 
                            WHERE s1.student_id = s2.student_id AND s1.subject = s2.subject
                                )
                                ),
                                latest_scores AS (
                                    SELECT student_id, subject, score AS latest_score, exam_date
                                        FROM Scores s1
                                            WHERE exam_date = (
                                                    SELECT MAX(exam_date) FROM Scores s2 
                                                            WHERE s1.student_id = s2.student_id AND s1.subject = s2.subject
                                                                )
                                                                )
                                                                SELECT f.student_id, f.subject, f.first_score, l.latest_score
                                                                FROM first_scores f
                                                                JOIN latest_scores l ON f.student_id = l.student_id AND f.subject = l.subject
                                                                WHERE f.exam_date < l.exam_date AND l.latest_score > f.first_score
                                                                ORDER BY f.student_id, f.subject;

Source