Window Functions Fundamentals: Functions
Module: Window Functions
**Basic Window Function Syntax:**
```sql
SELECT
column1,
column2,
FUNCTION_NAME(column) OVER (
[PARTITION BY column(s)]
[ORDER BY column(s)]
[ROWS/RANGE frame_specification]
) AS alias
FROM table_name;
```
**Progressive Examples:**
```sql
-- 1. Simplest form - entire result set
SELECT
employee_name,
salary,
COUNT(*) OVER() as total_employees,
AVG(salary) OVER() as company_avg_salary
FROM employees;
-- 2. PARTITION BY - separate calculations per group
SELECT
employee_name,
department,
salary,
COUNT(*) OVER(PARTITION BY department) as dept_size,
AVG(salary) OVER(PARTITION BY department) as dept_avg_salary,
salary - AVG(salary) OVER(PARTITION BY department) as salary_vs_dept_avg
FROM employees;
-- 3. ORDER BY - sequential/cumulative calculations
SELECT
employee_name,
hire_date,
salary,
ROW_NUMBER() OVER(ORDER BY hire_date) as hire_sequence,
SUM(salary) OVER(ORDER BY hire_date) as cumulative_payroll,
AVG(salary) OVER(ORDER BY hire_date) as running_avg_salary
FROM employees;
-- 4. Combined PARTITION BY + ORDER BY