CTE (WITH) giúp đặt tên subquery, chia query phức tạp thành bước dễ đọc, hoặc dùng trong data-modifying statements. PostgreSQL hiện đại có thể inline CTE khi phù hợp; nhưng materialization vẫn là điều cần hiểu khi tối ưu.
Ví dụ:
sql
WITH paid_orders AS (
SELECT * FROM orders WHERE status = 'paid'
)
SELECT user_id, count(*) FROM paid_orders GROUP BY user_id;Dùng CTE để làm rõ logic, nhưng kiểm plan nếu query performance quan trọng.