Window Functions vs CTEs: Functions
Module: Subqueries & CTEs
**Window Function Syntax:**
```sql
SELECT
column1,
column2,
WINDOW_FUNCTION() OVER (
[PARTITION BY partition_columns] -- Optional: Define groups
[ORDER BY order_columns] -- Optional: Define order
[ROWS/RANGE frame_clause] -- Optional: Define window frame
) as result_column
FROM table;
```
**CTE Syntax:**
```sql
WITH cte_name AS (
SELECT columns
FROM table
WHERE conditions
),
another_cte AS (
SELECT columns
FROM cte_name -- Can reference previous CTEs
JOIN other_table
)
SELECT *
FROM another_cte;
```
**Combined Syntax:**
```sql
WITH prepared_data AS (
-- CTE: Data preparation
SELECT
category,
product_id,
SUM(quantity) as total_sold
FROM sales
GROUP BY 1, 2
)
SELECT
category,