AdvancedINSERT, UPDATE, DELETE
Batch UPDATE with CTE for complex logic
The query
SQL
WITH
salary_adjustments AS (
SELECT
emp_id,
salary,
CASE
WHEN salary < 40000 THEN salary * 1.15 -- 15% for low earners
WHEN salary BETWEEN 40000 AND 70000 THEN salary * 1.10 -- 10%
WHEN salary > 70000 THEN salary * 1.05 -- 5% for high earners
END AS new_salary
FROM employees
WHERE status = 'active'
AND EXTRACT(YEAR FROM hire_date) <= 2022
)
UPDATE employees e
SET salary = sa.new_salary
FROM salary_adjustments sa
WHERE e.emp_id = sa.emp_id
RETURNING e.emp_id, e.first_name, sa.salary AS old_salary, e.salary AS new_salary;Note
“CTE in UPDATE statement makes complex conditional bulk updates readable and maintainable.