Aliasing the Table Twice (e and m)
Concepts covered: sqlSelfJoin
The query has the same shape every time. Same table in the FROM clause twice, with two different aliases. Join condition expresses the relationship between the two roles. SELECT pulls columns from both aliases. The aliases are not decoration; they are the only way SQL knows which copy of the table you are talking about in each column reference. The query you should be able to write from memory Read this query out loud while you type it. The FROM clause lists employees twice. Alias e is the employee row. Alias m is the manager row. The join condition says 'pair each employee with the row whose employee_id equals this employee's manager_id.' The WHERE filters down to pairs where the employee's salary exceeds the manager's. Without the aliases, SQL cannot tell which copy of the table you mean
About This Interactive Section
This section is part of the Self-Join: Beginner lesson on DataDriven, a free data engineering interview prep platform. Each section includes explanations, worked examples, and hands-on code challenges that execute in real time. SQL queries run against a live database. Python runs in a sandboxed Docker container. Data modeling problems validate against interactive schema canvases. All content is framed around what data engineering interviewers actually test at companies like Meta, Google, Amazon, Netflix, Stripe, and Databricks.
How DataDriven Lessons Work
DataDriven combines four interview rounds (SQL, Python, Data Modeling, Pipeline Architecture) with adaptive difficulty and spaced repetition. Easy problems get harder as you improve. Weak concepts resurface until you master them. Your readiness score tracks progress across every topic interviewers test. Every lesson section ends with problems you solve by writing and running real code, not by picking multiple-choice answers.