SQL CTE Tables: Simplifying Complex Queries

Meltem Girit
3 min readJul 19, 2024

SQL is a powerful tool for managing and analyzing data, and mastering its advanced features can significantly enhance your ability to work with databases. One such feature that’s indispensable for simplifying complex queries is the Common Table Expression (CTE). Let’s dive into how CTEs work with some practical examples.

What are CTEs?

CTEs, or Common Table Expressions, allow you to define temporary result sets that you can reference within a SQL query. They’re incredibly handy for breaking down intricate queries into manageable parts, enhancing both readability and maintainability.

Syntax of CTE:

The syntax for creating a CTE looks like this:

Example Scenario: Employees, Departments, and Salaries

Let’s illustrate CTEs with three tables: Employees, Departments, and Salaries.

Employees Table:

Departments Table:

Salaries Table:

Using CTEs to Simplify Queries

Now, imagine we want to find the average salary in each department. Here’s how you can achieve that with a CTE:

In this example:

  • We create a CTE named DepartmentSalaries that calculates the average salary (AvgSalary) for each department by joining Employees and Salaries tables.
  • The main query then retrieves the department name and average salary from the DepartmentSalaries CTE, joined with the Departments table.

Consider a scenario where we need to query hierarchical data, such as an organizational chart:

This CTE (RecursiveEmployees) recursively retrieves employees and their managers, starting from a specified top-level manager (NULL in this case).

For scenarios requiring ranking or partitioning, CTEs provide a clear structure:

RankedSalaries assigns a rank to employees based on their salary within each department, allowing us to easily retrieve the top 3 earners in each department.

Conclusion

Common Table Expressions (CTEs) are a game-changer in SQL, allowing you to write cleaner, more efficient queries. By capturing complex logic into temporary result sets, CTEs enhance query readability and maintainability.

For further exploration on SQL and CTEs, I highly recommend checking out Alex the Analyst’s YouTube channel. He offers a fantastic tutorial on CTEs that’s both informative and engaging. You can watch it here. His tutorials are not just about SQL; he also provides a full Data Analyst Bootcamp series designed for aspiring analysts like myself. I’ve learned a lot from these series, which have greatly enhanced my understanding and proficiency in data analysis.

Embrace CTEs in your SQL toolkit to streamline your data analysis workflows and take your database skills to the next level. Happy querying!

--

--

Meltem Girit
0 Followers

Aspiring Data Analyst | Leveraging Customer Insights & Data Analysis