Common Table Expressions (CTEs) là một tính năng mạnh mẽ trong PostgreSQL (và nhiều hệ quản trị cơ sở dữ liệu khác) cho phép bạn định nghĩa các truy vấn tạm thời có thể được tham chiếu trong các câu lệnh SQL. CTE giúp cải thiện tính đọc và tổ chức của mã SQL, đặc biệt khi làm việc với các truy vấn phức tạp.
Cú pháp cơ bản của một CTE trong PostgreSQL như sau:
WITH cte_name AS ( -- Truy vấn SQL SELECT column1, column2 FROM table_name WHERE condition ) SELECT * FROM cte_name;
Dưới đây là một ví dụ đơn giản về CTE trong PostgreSQL:
WITH sales_data AS ( SELECT salesperson_id, SUM(sales_amount) AS total_sales FROM sales GROUP BY salesperson_id ) SELECT sd.salesperson_id, sd.total_sales FROM sales_data sd WHERE sd.total_sales > 10000;
Dưới đây là một ví dụ về CTE đệ quy, thường được sử dụng để truy vấn dữ liệu cây hoặc đồ thị:
WITH RECURSIVE employee_hierarchy AS ( SELECT employee_id, manager_id, name FROM employees WHERE manager_id IS NULL -- Bắt đầu từ người quản lý cấp cao nhất UNION ALL SELECT e.employee_id, e.manager_id, e.name FROM employees e INNER JOIN employee_hierarchy eh ON e.manager_id = eh.employee_id ) SELECT * FROM employee_hierarchy;
CTEs là công cụ hữu ích trong PostgreSQL giúp tối ưu hóa việc viết truy vấn và tổ chức mã. Chúng cung cấp sự linh hoạt và khả năng mở rộng cho các tác vụ truy vấn phức tạp, đồng thời giúp mã dễ đọc và bảo trì hơn.