SQL WITH Clause
The SQL WITH clause allows you to define a temporary result set, also known as a common table expression (CTE), which can be referenced within a SELECT, INSERT, UPDATE, or DELETE statement. It makes complex queries easier to read and manage by breaking them down into simpler, reusable parts.
The CTE can be used to store the intermediate results of a query and then refer to that result in a main query. This is especially useful when dealing with multiple subqueries that are used repeatedly in a query.
The WITH clause is commonly used for complex queries involving aggregations, recursion, or when multiple references to the same query are needed.
Table Structure
Code Example
CREATE TABLE Orders (
OrderID INT PRIMARY KEY,
Product VARCHAR(50),
CustomerID INT,
Price DECIMAL(10, 2)
);
Example
In this example, we will use the WITH clause to create a CTE that stores the average price of products in the Orders table. We will then use the CTE to filter orders with a price above the average price.
Code Example
-- Use WITH clause to define a CTE that calculates the average price
WITH AvgPrice AS (
SELECT AVG(Price) AS avg_price FROM Orders
)
-- Select orders where the price is above the average price
SELECT * FROM Orders
WHERE Price > (SELECT avg_price FROM AvgPrice);
Output
OrderID | Product | CustomerID | Price |
---|---|---|---|
102 | Phone | 102 | 1200.00 |
103 | Laptop | 103 | 800.00 |
Explanation
- The WITH
clause defines a common table expression (CTE) named AvgPrice, which calculates the average price of all products in the Orders table.
- The main query then uses the CTE to filter orders with a Price greater than the average price.
- This approach allows for easier readability and reuse of the logic within the query, especially for complex conditions.