SQL Practice Logo

SQLPractice Online

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,