# Mastering SQL Joins: Equi and Non Equi Joins for Efficient Data Analysis

## Part 1: Non Equi Joins in SQL

Working with databases is an essential skill for any analyst or software engineer. Writing queries to extract, transform, and load data is part of their daily work routine.

One of the critical concepts in SQL is joining tables, which means to combine data from two or more tables based on some matching condition. The standard way of joining tables is called Equi Join, which matches tables based on a single equality comparison.

However, there are other types of joins that do not rely on equality, known as Non Equi Joins. In this article, we will cover the fundamentals of Non Equi Joins and Equi Joins in SQL.

Non Equi Joins are types of joins that do not use equality comparisons, but rather use other operators such as greater than, less than, or between. These joins are useful when we want to extract data that meets some criteria based on a range of values or conditions beyond their equality.

Non Equi joins introduce complexity in the SQL statements, but they are interchangeable with Equi Joins and Unions and Intersection Set Operations. Types of Non Equi Join Operators:

### Types of Non Equi Join Operators

• #### Greater Than ( > )

This operator matches records where the value of one column is greater than the value of another column. For example, if we have two tables, Orders and Customers, we can retrieve all orders from customers who spent more than \$1000.

``````SELECT *
FROM Orders o
INNER JOIN Customers c
ON o.CustomerID = c.CustomerID
AND c.TotalPurchase > 1000;``````
• #### Less Than ( < )

This operator matches records where the value of one column is less than the value of another column.

For example, if we have two tables, Products and Sales, we can retrieve all products that were sold for less than their cost price.

``````SELECT *
FROM Products p
INNER JOIN Sales s
ON p.ProductID = s.ProductID
AND s.SalesPrice < p.Costprice;``````
• #### Between

This operator matches records where a value falls within a specified range of two values.

For example, if we have two tables, Employees and Sales, we can retrieve all employees who made sales between \$1000 and \$5000.

``````SELECT *
FROM Employees e
INNER JOIN Sales s
ON e.EmployeeID = s.EmployeeID
AND s.SalesAmount BETWEEN 1000 AND 5000;``````
• #### Not in

This operator matches records where the value of one column does not exist in another column.

For example, If we have two tables, Customers and ShippedOrders, we can retrieve all customers who did not complete any orders.

``````SELECT *
FROM Customers c
LEFT JOIN ShippedOrders so
ON c.CustomerID = so.CustomerID
WHERE so.CustomerID IS NULL;``````

Using Non Equi Join Operators can help to extract data that matches specific conditions for analysis or management of data.

## Part 2: Understanding Equi Joins in SQL

An Equi Join is a type of join that returns data that exists in both tables based on a single equality comparison.

This comparison usually involves primary and foreign keys that have the same data type. Equi Join returns all columns from both tables where the matching records exist.

Equi Joins are easy to write and execute, and they form the basis of more complex joins.

### Example of Equi Join in SQL

Suppose that we have two tables, Customers and Orders, and we want to retrieve all customers who placed orders with Order ID, Order Date, and Total Amount.

We can use Equi Join in the following way:

``````SELECT c.CustomerName, o.OrderID, o.OrderDate, o.TotalAmount
FROM Customers c, Orders o
WHERE c.CustomerID = o.CustomerID;``````

The above SQL statement will return all rows from Customers and Orders where the CustomerID is the same.

## Part 3: Using Non Equi Join with Two Tables

When using Non Equi Join with two tables, we can extract data based on matching conditions that are not based on equality. The usual practice is to use the WHERE clause of the SELECT statement to specify the conditions for the Non Equi Join.

The WHERE clause specifies the columns from the two tables and the matching operator. Using the comparison operator, the Non Equi Join returns all the rows with matching criteria from the two tables.

### Querying Records with Non Equal Conditions

In a Non Equi Join between two tables, we specify the matching conditions using the comparison operator symbols such as greater than, less than, between, not in, and other comparison operators. For example, suppose two tables, Orders and Shippers are given, and we want to retrieve all orders that were handled by shippers who charged more than \$100 in their last shipment.

In this case, we can use the greater than (>) operator as follows:

``````SELECT o.OrderID, o.ShippedDate, s.ShipperName, s.ShipperCharge

FROM Orders o
INNER JOIN Shippers s
ON o.ShipperID = s.ShipperID
WHERE s.ShipperCharge > 100;``````

The SQL statement will retrieve all Orders with their ShippedDate, ShipperName, and ShipperCharge data whose Shipper’s last charge was greater than \$100.

### Example of Non Equi Join with Two Tables

Suppose two tables, Customers and Sales, exist, containing customer information and sales transactions.

To identify all the transactions that a particular customer has not completed, we can use a non-equi join with the NOT EXISTS operator. Here is an example:

``````SELECT S.*

FROM Sales S
WHERE NOT EXISTS
(SELECT * FROM Customers C WHERE S.CustomerID=C.CustomerID);``````

The above statement uses the NOT EXISTS operator to retrieve all of the distinct sales entries for customers who have not established any orders. The subquery behind NOT EXISTS retrieves all customers who have purchased, and then the outer query returns any sales records that do not match these customers.

## Part 4: Non Equi Join in Self Join

A Self Join is a common SQL operation, where a table is joined to itself as if it were two distinct tables. It is achieved by assigning table aliases to the table and its columns.

A Self Join can be used to make comparisons within a table or to compare data between two tables. Non Equi Joins can also be used in Self Join situations to identify specific patterns or relationships within the data.

### Using Non Equi Join for Self Join

In this case, a table is joined to itself. It is a way to build hierarchical trees for categories such as Employees and Supervisors represented in the same table. The same table can be used to find the Employees and their supervisors from the table.

To accomplish this, there is a need to differentiate between the employees and supervisors by using table aliases.

### Example Queries for Non Equi Join with Self Join

Consider self-join applications for unordered data, such as finance transactions.

Suppose, for instance, that we have a table of Sales with data in the following format:

``````SELECT S1.*
FROM Sales S1, Sales S2
WHERE S1.CustomerID = S2.CustomerID
AND S1.SalesAmount >= 2*S2.SalesAmount;``````

The above statement would provide data on all non-matching records for sales amounts where one transaction is at least double that of another sale from the same customer. In conclusion, using Non Equi Join on two tables allows us to extract data based on matching conditions that are not based on equality.

We can use comparison operators, like greater than, less than, between, and not in to extract data from tables. Using Non Equi Joins with Self Join allows for comparisons of unordered data between table records, such as a Sales transaction log with multiple transactions for each customer.

In contrast, a Self Join simplifies hierarchical relationships in a table. Knowing how to use Non Equi Joins in these scenarios enhances the analyst’s knowledge and flexibility in database management and analysis.

## Part 5: Getting to Know Our Data

Before we start working with data, it is important to obtain an overview of what the data entails. It is essential to understand the structure of the data, the relationships between tables, the column names, and the data types in each column.

Having a good understanding of the data allows us to build accurate SQL queries and retrieve data correctly.

### Overview of Data

The overview of data involves collecting information about the data structures and the data entities, understanding the relationships within and between tables, and reviewing the column-level details of the data. This step prepares us to find the data that is relevant to our objective and extract it. To obtain an overview of the data, we can consider the following:

1. #### Data Dictionary

A data dictionary is a document or a database containing descriptions of the data elements and data structures that comprise a dataset or system. It provides information about the data types, column names, descriptions, and other essential information.

2. #### ER Diagram

An entity-relationship (ER) diagram is a graphical representation of the tables and their relationships. It provides a visual representation of the relationships between tables, allowing us to see the connections between the tables and understand how they relate to each other.

3. #### Sample Dataset

Reviewing a small sample dataset provides a quick way to obtain basic information about the data structure, column names, and data types.

### Review of Equi Joins with Data

An Equi Join is used to combine data from two or more tables based on a single column with matching values. The key to success in using Equi Joins is to understand the relationship between tables and the columns that have the same values in both tables. For example, suppose we have two tables, Customers and Orders, and we want to retrieve all orders made by each customer.

In this case, we can use the CustomerID column, which is present in both tables, to perform an Equi Join. The query will look like this:

``````SELECT *

FROM Customers
INNER JOIN Orders
ON Customers.CustomerID = Orders.CustomerID;``````

The SQL statement will retrieve all matching records from both tables, where the CustomerID column in both tables has the same value. Knowing the relationship between tables and the columns that have the same values allows us to use Equi Joins effectively and retrieve data accurately.

SQL is an essential skill for data analysts and software engineers. It allows us to efficiently extract, modify, and load data from multiple databases.

There are many resources available for learning SQL, from online courses, tutorials, and books to hands-on training and certifications.

### Resources for Learning SQL

1. #### Online Courses

Many websites offer SQL courses, including Coursera, Udemy, Pluralsight, and Codeacademy. These courses typically provide a step-by-step guide to writing SQL queries and covering the basics of SQL.

2. #### Online Tutorials

There are various online tutorials that provide free SQL lessons. These tutorials are usually structured to introduce basic SQL concepts and provide hands-on practice.

3. #### Textbooks

SQL textbooks are an excellent resource for in-depth learning and reference. To choose the best textbook, it is essential to select one that covers the correct SQL version, contains examples, and provides hands-on exercises.

4. #### Hands-On Training

Many organizations provide hands-on training for SQL. These training programs provide participants with a practical and thorough understanding of SQL through workshops, seminars, and guided exercises.

5. #### Certifications

Certification programs are also available for SQL. These certifications validate your knowledge and skill in SQL, and they provide a competitive edge in the job market.

## Conclusion

In conclusion, having an overview of data helps to make sure our SQL queries are targeted and accurate. Understanding Equi Joins improves our ability to query data by allowing us to connect pieces of information.

Learning SQL is essential for working with databases and is achievable through a variety of resources, including online courses, tutorials, textbooks, hands-on training, and certifications. By obtaining and using these resources, analysts and software engineers can learn how to harness the power of SQL and achieve their objectives.

In conclusion, SQL is a crucial skill for data analysts and software engineers, and mastering it requires knowledge of different types of joins. Non Equi Joins are alternative ways of extracting data based on matching conditions not based on equality, while Equi Joins use a single equality comparison to join tables.

Understanding how to use these two types of joins is vital for accurate and efficient database management and analysis, and there are many resources available to learn SQL, including online courses, tutorials, textbooks, hands-on training, and certifications. Knowing how to get to know our data and review Equi Joins further enhance our SQL abilities.

Overall, obtaining these skills allows analysts to extract valuable insights from data and make informed business decisions.