OneCompiler

Find all employees and the months they got a pay raise (i.e., their salary was higher than the previous month).

187
    emp_id INT,
    emp_name VARCHAR(50),
    salary INT,
    salary_month VARCHAR(7)  -- Stored as 'YYYY-MM'
);

INSERT INTO employees (emp_id, emp_name, salary, salary_month)
VALUES
  (1, 'Alice', 5000, '2024-01'),
  (1, 'Alice', 5200, '2024-02'),
  (1, 'Alice', 5200, '2024-03'),
  (2, 'Bob', 6000, '2024-01'),
  (2, 'Bob', 6100, '2024-02'),
  (2, 'Bob', 6200, '2024-03');
  
WITH salary_history AS (
  SELECT
    emp_id,
    emp_name,
    salary_month,
    salary,
    LAG(salary) OVER (PARTITION BY emp_id ORDER BY salary_month) AS prev_salary
  FROM employees
)
SELECT emp_id, emp_name, salary_month
FROM salary_history
WHERE salary > prev_salary;


SELECT
  emp_id,
  emp_name,
  salary_month
FROM (
  SELECT
    emp_id,
    emp_name,
    salary_month,
    salary,
    LAG(salary) OVER (
      PARTITION BY emp_id 
      ORDER BY salary_month
    ) AS prev_salary
  FROM employees
) AS salary_history
WHERE salary > prev_salary;

SELECT * FROM employees ORDER BY emp_id, salary_month;