This is the query writing order:
SELECT
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
WINDOW
ORDER BY
LIMITThis is how SQL actually executes internally:
FROM
JOIN
ON
WHERE
GROUP BY
HAVING
SELECT
DISTINCT
ORDER BY
LIMITSELECT
column_name
FROM
table_name AS t
WHERE
condition = 'value'
ORDER BY
column_name;SELECT
FROM
WHERE
GROUP BY
ORDER BY
JOIN
HAVING
LIMITGOOD:
SELECT
employee_id,
employee_name,
salaryBAD:
SELECT employee_id, employee_name, salaryGOOD:
Employees AS e
Departments AS d
Orders AS oBAD:
Employees a
Departments bGOOD:
SELECT
employee_id,
employee_nameBAD:
SELECT *WHERE
salary > 50000
AND department_id = 1
AND status = 'ACTIVE'- Filter products that are:
- low fat
- recyclable
-- Problem: Recyclable and Low Fat Products
SELECT
p.product_id
FROM
Products AS p
WHERE
p.low_fats = 'Y'
AND p.recyclable = 'Y';SELECT
e.name,
d.department_name
FROM
Employees AS e
INNER JOIN Departments AS d
ON e.department_id = d.department_id;SELECT
department_id,
COUNT(*) AS total_employees
FROM
Employees
GROUP BY
department_id;SELECT
department_id,
COUNT(*) AS total_employees
FROM
Employees
GROUP BY
department_id
HAVING
COUNT(*) > 5;SELECT
employee_id,
salary,
RANK() OVER (
PARTITION BY department_id
ORDER BY salary DESC
) AS salary_rank
FROM
Employees;- SELECT / WHERE
- ORDER BY
- GROUP BY
- HAVING
- JOINs
- Subqueries
- CTEs
- Window Functions
- Advanced Aggregations
- Optimization
- Keep queries readable
- Use consistent formatting
- Prefer explicit JOINs
- Use CTEs for complex logic
- Avoid unnecessary nesting
- Write maintainable SQL
- Think about scalability
MIT License