Common Table Expressions (CTEs) are a powerful feature in SQL that allow you to define a temporary result set that can be used within a query. CTEs are similar to temporary tables, but they are not materialized in the database and are only available within the scope of the query in which they are defined. CTEs provide a way to simplify complex queries and make them more readable.
Here’s an example of a simple CTE that uses the WITH keyword to define a result set:
WITH cte AS ( SELECT * FROM products WHERE price > 100 ) SELECT * FROM cte;
In this example, the CTE is named “cte” and includes all products with a price greater than 100. The SELECT statement at the end of the query selects all columns from the CTE.
CTEs can be used to define multiple levels of subqueries, making it easier to write complex queries. Here’s an example of a nested CTE:
WITH cte1 AS ( SELECT * FROM products WHERE price > 100 ), cte2 AS ( SELECT cte1.id, SUM(order_items.quantity) as total_quantity FROM cte1 JOIN order_items ON cte1.id = order_items.product_id GROUP BY cte1.id ) SELECT * FROM cte2;
In this example, the first CTE “cte1” defines all products with a price greater than 100. The second CTE “cte2” uses the first CTE to join with the order_items table and calculate the total quantity of each product sold. The final SELECT statement selects all columns from the second CTE.
One of the key benefits of using CTEs is that they make complex queries easier to read and maintain. In addition, CTEs can be used to simplify queries that would otherwise require the use of temporary tables or complex subqueries.
Overall, Common Table Expressions are a useful feature in SQL that can simplify complex queries and make them more readable.