<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Gathuru_M</title>
    <description>The latest articles on Forem by Gathuru_M (@gathurum).</description>
    <link>https://forem.com/gathurum</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F912835%2Fe5214cca-5a55-402c-8806-eabe9d7fc72c.png</url>
      <title>Forem: Gathuru_M</title>
      <link>https://forem.com/gathurum</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/gathurum"/>
    <language>en</language>
    <item>
      <title>SQL Joins Explained: Case Example</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Mon, 02 Mar 2026 18:43:59 +0000</pubDate>
      <link>https://forem.com/gathurum/sql-joins-explained-case-example-2l3</link>
      <guid>https://forem.com/gathurum/sql-joins-explained-case-example-2l3</guid>
      <description>&lt;p&gt;Structured Query Language(SQL) is a computer language for storing, manipulating, and retrieving data stored in a relational database.&lt;/p&gt;

&lt;p&gt;SQL Joins are like clauses used to combine records from two or more tables in a database, just as the name(join) means.&lt;/p&gt;

&lt;p&gt;In this article, you will learn, using a case example, the different types of joins, when, and how they are used. Be sure to check for “&lt;strong&gt;bonus joins”&lt;/strong&gt; included at the end of the article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Data
&lt;/h2&gt;

&lt;p&gt;We will use data from these 2 tables to show various ways to display employees from John Smith's company.&lt;/p&gt;

&lt;h3&gt;
  
  
  Departments Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Department_Id&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Employees Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee_Id&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Department_Id&lt;/th&gt;
&lt;th&gt;Job_Role&lt;/th&gt;
&lt;th&gt;Manager_Id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;Null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;Null&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The code below shows the syntax for writing a JOIN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;table1&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;table2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;table1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;column1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;table2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;column1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Types of Joins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are four major types of joins in SQL, as listed below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inner Join&lt;/li&gt;
&lt;li&gt;Left Join&lt;/li&gt;
&lt;li&gt;Right Join&lt;/li&gt;
&lt;li&gt;Full Join&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Inner Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It creates a result table that displays information &lt;strong&gt;common&lt;/strong&gt; between two tables based on a shared piece of information. &lt;/p&gt;

&lt;p&gt;It is the most important and frequently used of the joins.&lt;/p&gt;

&lt;p&gt;In this case, we could use it to display employees from the departments listed in the first table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Job_Role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;
&lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
 &lt;span class="c1"&gt;-- You can replace the keyword INNER JOIN with JOIN&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Job_Role&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Left Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;LEFT JOIN&lt;/em&gt; returns &lt;strong&gt;all&lt;/strong&gt; rows from the left table, plus matched values from the right table or NULL in case of no match.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: The left table refers to the table that appears before the "LEFT JOIN" keywords in your SQL query. Same case applies when using RIGHT JOIN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We could use left join to retrieve a list of all employees along with their department names. If an employee doesn't belong to a department, display NULL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee_Id&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can use the COALESCE() function to replace NULL values with more relatable user-defined values.&lt;/p&gt;

&lt;p&gt;i.e. If an employee doesn't belong to a department, display "No Department" instead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;"No Department"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee_Id&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;No Department&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Right Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;SQL RIGHT JOIN&lt;/em&gt; returns all rows from the right table, even if there are no matches&lt;br&gt;
in the left table. Not so different from the LEFT JOIN.&lt;/p&gt;

&lt;p&gt;In this case, we could view employees and their various departments&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;Department_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;COALESCE&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;"No Employee"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Full_Name&lt;/span&gt; 
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Research&lt;/td&gt;
&lt;td&gt;No Employee&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Full Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;SQL FULL JOIN&lt;/em&gt; combines the results of both left and right outer joins.&lt;/p&gt;

&lt;p&gt;The joined table will contain all records from both tables and fill in NULLs for missing&lt;br&gt;
matches on either side.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Job_Role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;FULL&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;EMPLOYEE_ID&lt;/th&gt;
&lt;th&gt;FULL_NAME&lt;/th&gt;
&lt;th&gt;JOB_ROLE&lt;/th&gt;
&lt;th&gt;DEPARTMENT_ID&lt;/th&gt;
&lt;th&gt;DEPARTMENT_NAME&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus Joins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Self Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;SELF JOIN&lt;/em&gt; is typically not a join type but a special way of joining a table to itself. You may want to combine rows in a table based on a related column present in the table.&lt;/p&gt;

&lt;p&gt;It is commonly used when you need to traverse a hierarchical structure where each row references another row in the same table &lt;/p&gt;

&lt;p&gt;OR&lt;/p&gt;

&lt;p&gt;When comparing data within rows in the same table.&lt;/p&gt;

&lt;p&gt;In this case, we will use self-join in the employees’ table to display the employee-manager relationship. Each employee record contains a reference to the manager's ID, allowing us to retrieve more information about the managers by adding another column, “Manager_Name”. In Data Science, this is an example of &lt;strong&gt;&lt;em&gt;feature engineering.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Job_Role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Manager_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Manager_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; 
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manager_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;EMPLOYEE_ID&lt;/th&gt;
&lt;th&gt;FULL_NAME&lt;/th&gt;
&lt;th&gt;JOB_ROLE&lt;/th&gt;
&lt;th&gt;DEPARTMENT_ID&lt;/th&gt;
&lt;th&gt;MANAGER_NAME&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's most of what you need to know about SQL Joins. Hopefully, you found this information helpful. Feel free to share it with anyone who's having a hard time with Joins, and keep learning! 😊&lt;/p&gt;

&lt;p&gt;If you have any questions, please leave them in the comments section below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>datascience</category>
      <category>beginners</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>Turning Messy Data into Business Action</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Mon, 09 Feb 2026 02:07:28 +0000</pubDate>
      <link>https://forem.com/gathurum/turning-messy-data-into-business-action-3jj8</link>
      <guid>https://forem.com/gathurum/turning-messy-data-into-business-action-3jj8</guid>
      <description>&lt;h2&gt;
  
  
  How Analysts Translate Messy Data, DAX, and Dashboards into Action Using Power BI
&lt;/h2&gt;

&lt;p&gt;As a data analyst, whether in the corporate world or working on a personal project, you will find that data analysis is often driven by the &lt;strong&gt;need to solve a problem&lt;/strong&gt; or wanting an accurate, insightful view of data to make a better decision.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Define the Objective
&lt;/h3&gt;

&lt;p&gt;First, we need to come up with the objective of our analysis.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Ask Questions:&lt;/strong&gt; Write down the specific questions you want answers to from the analysis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Theme Your Dashboard:&lt;/strong&gt; If you need a dashboard, design one that maintains a clear theme. Don’t just show every kind of data to the user—focus on what matters.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Gathering the Data
&lt;/h3&gt;

&lt;p&gt;The data we need is often scattered. You might need to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scrape it online.&lt;/li&gt;
&lt;li&gt;Use data from survey results.&lt;/li&gt;
&lt;li&gt;Combine several Excel sheets.&lt;/li&gt;
&lt;li&gt;Fetch data from a database.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, how do analysts translate this &lt;strong&gt;Messy Data&lt;/strong&gt; into action? &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Power BI&lt;/strong&gt; allows you to access data from various sources, load it, transform it, and analyze it—all in the same workspace.&lt;/p&gt;

&lt;p&gt;In Power BI, we follow the &lt;strong&gt;ELT approach&lt;/strong&gt; (Extract, Load, Transform).&lt;/p&gt;




&lt;h2&gt;
  
  
  The ELT Process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Extract and Load
&lt;/h3&gt;

&lt;p&gt;First, we start by &lt;strong&gt;Extracting&lt;/strong&gt; the required data. &lt;br&gt;
When you launch Power BI, you get a prompt to select a data source. Simply select where your data lies and import it into Power BI by &lt;strong&gt;Loading&lt;/strong&gt; it there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvo322w5lt36jliquox1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyvo322w5lt36jliquox1.png" alt="Power BI Data Sources" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Transform
&lt;/h3&gt;

&lt;p&gt;Once all your data is loaded, the next step is &lt;strong&gt;Cleaning&lt;/strong&gt;. You want to remove all inconsistencies in your data by ensuring:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Correct Data Types:&lt;/strong&gt; All fields (Dates, Decimals, Text) must be set correctly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Handle Missing Values:&lt;/strong&gt; Deal with nulls or blanks by either removing rows or filling them where appropriate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Splitting/Merging:&lt;/strong&gt; Split or merge columns where necessary (e.g., splitting an "Address" column to get separate "Location" and "Street" fields).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardization:&lt;/strong&gt; Ensure consistency (e.g., making sure all currency data is in either Dollars or Shillings across the entire dataset).&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Data Modelling: The Integration Step
&lt;/h2&gt;

&lt;p&gt;After the data is clean and transformed, the best way to integrate it is through &lt;strong&gt;Data Modelling&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As discussed in my previous article &lt;a href="https://dev.to/gathurum/how-to-implement-data-modelling-in-power-bi-4p2h"&gt;Link&lt;/a&gt; , data modelling helps you create a clear structure and establish necessary relationships before you begin any plotting or calculations. This involves creating a proper &lt;strong&gt;Star Schema&lt;/strong&gt;, consisting of a Fact table and Dimension tables.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Always make sure to click &lt;strong&gt;"Close &amp;amp; Apply"&lt;/strong&gt; to save all changes made in the Power Query Editor before you start building your reports.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  DAX
&lt;/h2&gt;

&lt;p&gt;Once your data model is set up, you might find that the raw data doesn't provide all the answers immediately. This is where &lt;strong&gt;DAX (Data Analysis Expressions)&lt;/strong&gt; comes in. &lt;br&gt;
DAX is the formula language of Power BI, allowing us to calculate and generate new information in two primary ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Measures:&lt;/em&gt;&lt;/strong&gt; Use DAX to create summary aggregations. These calculate values on the fly, such as Total Sales, Year-over-Year Growth, Profit Margin, or Average Selling Price.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Calculated Columns:&lt;/em&gt;&lt;/strong&gt; Generate new columns within your tables to provide more granular information. For example, you could create a "Profit Status" column that labels each row as "Profitable" or "Loss" based on a calculation.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DAX respects your model’s relationships. When you create a measure and plot it in a visual, it automatically reacts to the "Filter Context." This means the numbers will automatically filter and update based on the Dimensions (such as Date, Category, or Location) you use in your report.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualizing for Answers
&lt;/h2&gt;

&lt;p&gt;A well-modeled dataset allows us to answer any question we might have. The best way to do this is to plot &lt;strong&gt;Visuals&lt;/strong&gt;. Why?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Spot Patterns Fast:&lt;/strong&gt; Visuals help you and your audience see trends or patterns immediately.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tell a Story:&lt;/strong&gt; After answering your initial questions, creating a dashboard tells a story about the problem you want to solve.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;A great dashboard should:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Describe the problem clearly.&lt;/li&gt;
&lt;li&gt;Illustrate insights found in the data.&lt;/li&gt;
&lt;li&gt;Suggest a potential solution to the problem.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By following this flow, your analysis remains relevant and provides genuine value, rather than just showing the dashboard user what they already know.&lt;/p&gt;




</description>
      <category>analytics</category>
      <category>beginners</category>
      <category>ai</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>How to Implement Data Modelling in Power BI</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Mon, 02 Feb 2026 21:25:14 +0000</pubDate>
      <link>https://forem.com/gathurum/how-to-implement-data-modelling-in-power-bi-4p2h</link>
      <guid>https://forem.com/gathurum/how-to-implement-data-modelling-in-power-bi-4p2h</guid>
      <description>&lt;p&gt;In this article we will explore the fundamental concepts of data modelling and specifically how to implement data modelling within Power BI for effective data analysis. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Modelling&lt;/strong&gt; is simply structuring or setting up your data in tables, relationships, and access to data for analysis scenarios.&lt;/p&gt;

&lt;p&gt;Often you'll find data distributed in several sheets or systems since, that is how it's maintained. If lucky your data could be in a neat setup &lt;em&gt;(Data Warehouse)&lt;/em&gt; where most of the structuring has already been done.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Case Scenario&lt;/em&gt;:
&lt;/h3&gt;

&lt;p&gt;Here is some sample data, to help make sense of this concept:&lt;br&gt;
&lt;a href="https://www.youtube.com/redirect?event=video_description&amp;amp;redir_token=QUFFLUhqbllqX1p4bnBVbUhVTVozSTJvMEFxZWV1azRWZ3xBQ3Jtc0ttdG53eFJac2w2am9Lb3lDVWlrMm10UFVkRkgyZFRHX25OaU9RcmlmUmpIRHlpZ05WcjR0WjlnUWN6S1BjcWZzQXRoX0ItbjJ3U3FKWFY5NndzQmQ0VkZNcjJrNGY4SzFOek5ROUFxQTRFdS1iUWROaw&amp;amp;q=https%3A%2F%2Fchandoo.org%2Fwp%2Fwp-content%2Fuploads%2F2024%2F10%2Fsample-chocolate-sales-data-all.xlsx&amp;amp;v=4ePNrdxWtY0" rel="noopener noreferrer"&gt;Sample Chocolate Sales Data&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Understanding the Tables
&lt;/h3&gt;

&lt;p&gt;In our case, we have 5 tables.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fact Table:&lt;/strong&gt; One table that contains pointers to other tables, but has no specific information. In our case, the &lt;em&gt;shipments table&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dimension Tables:&lt;/strong&gt; Each explains one dimension of data. What is happening from the perspective of each dimension/entity. These will be the rest of our tables.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Calendar Table:&lt;/strong&gt; A special Dimension table found in most data that holds the time component of analysis, i.e., [Timeseries, Forecasting or Trend analysis].&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Doing this in Power BI
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Load Data:&lt;/strong&gt; Load the data in Power BI by selecting Excel Workbook as the data source. &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fidjk4u8k5m4pr41v418v.png" alt="Loading Data to Power BI" width="800" height="609"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic Modelling:&lt;/strong&gt; Power BI automatically tries to match the tables and create a model; you can see this in the &lt;strong&gt;Model View&lt;/strong&gt;. &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbrrodf06j67g5i12v5y4.png" alt="Data Modelling in Power BI" width="800" height="487"&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Manual Relationship Setup:&lt;/strong&gt; 🤔 However, not all the data was modelled automatically. To finish up, drag the &lt;strong&gt;'Shipdate'&lt;/strong&gt; field from the Shipment table onto &lt;strong&gt;'cal_date'&lt;/strong&gt; in the Calendar table to create a new relationship and complete the look.&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs48l55io96b3356hagye.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs48l55io96b3356hagye.png" alt="Relationships in Power BI" width="765" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Notice that the schema now looks &lt;em&gt;Star-shaped&lt;/em&gt;. This kind of model with one fact table and multiple dimension tables is called a &lt;strong&gt;Star Schema&lt;/strong&gt;. The process of setting up this structure is &lt;strong&gt;Data Modelling&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Manage Relationships:&lt;/strong&gt; You can view and edit all connections by clicking on &lt;strong&gt;Manage Relationships&lt;/strong&gt;. This menu shows the relationship status, specifically whether they are &lt;strong&gt;Active&lt;/strong&gt; or &lt;strong&gt;Inactive&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  Table Characteristics
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Relationship Design:&lt;/strong&gt; The Products table shows each product in a row with more information from the Shipments table indicating a Many to One Relationship.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fact Table Design:&lt;/strong&gt; The shipments table has more records as compared to the dimension tables in our data. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Therefore, Fact tables are engineered to host many records and may also have fewer columns as compared to dimension tables.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Effective data modelling is the backbone of any powerful analysis. By transforming messy, multi-sheet data into a structured Star Schema, everything will feel fast and intuitive; when it's wrong, you spend more time fixing "broken" numbers than actually analyzing data.&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>datascience</category>
      <category>bigdata</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Introduction to Linux for Data Engineers, Including Practical Use of Vi and Nano with Examples</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Mon, 26 Jan 2026 05:08:41 +0000</pubDate>
      <link>https://forem.com/gathurum/introduction-to-linux-for-data-engineers-including-practical-use-of-vi-and-nano-with-examples-2ck0</link>
      <guid>https://forem.com/gathurum/introduction-to-linux-for-data-engineers-including-practical-use-of-vi-and-nano-with-examples-2ck0</guid>
      <description>&lt;h2&gt;
  
  
  Why Every Data Engineer Needs to Make Friends with Linux
&lt;/h2&gt;

&lt;p&gt;Diving into Data Engineering, you’re probably well into writing some Python scripts or SQL queries. But there's mentions of "The Server" or "Production," and suddenly everyone is talking about Linux.&lt;/p&gt;

&lt;p&gt;If you’re wondering why you can’t just keep using Windows or macOS for everything, you’re not alone. Let’s break down &lt;strong&gt;why Linux&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you look at regular people browsing the web, about 70-75% of them use Windows. It’s comfortable, right? But in the "under-the-hood" world, where we have servers that actually run the internet and process massive datasets, Linux owns about 90% to 100% of that space.&lt;/p&gt;

&lt;p&gt;Knowing Linux isn't just a "nice to have"; it’s your secret weapon. If you can navigate a Linux terminal, you instantly become more hireable because you can actually manage the tools you build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is why Linux is a big deal:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;It’s where your work actually lives: You might write code on your laptop, but your data pipelines (the stuff that moves and cleans data) will almost certainly live on a Linux server. If it’s in "Production," it’s on Linux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Security: In data engineering, you’re handling sensitive information — names, emails, credit card digits. Linux is built like a fortress. It handles permissions and privacy way better than the standard consumer OS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Command Line makes you a pro: Typing commands might feel like you're in an old hacker movie, but it’s actually way faster than clicking through menus. Mastering the command line makes you faster, more confident, and—honestly—just a better engineer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It’s built for speed: Linux is "lightweight." It doesn’t waste energy on background apps you don't need. This means your data pipelines run faster and more efficiently.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Part 2: Getting Set Up (The WSL2 Guide)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;On Linux/Mac&lt;/strong&gt;: You’re already set! Just search for "Terminal" in your apps. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On Windows&lt;/strong&gt;: The best way to do this is through WSL2 (Windows Subsystem for Linux).&lt;/p&gt;

&lt;h3&gt;
  
  
  How to install WSL2:
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Enable the Feature:&lt;/em&gt; Go to your Windows Search Bar and Type 'Turn on Windows Features On or Off'.&lt;br&gt;
Find "Windows Subsystem for Linux" in the list, check the box, and click OK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e1nyel0zvl68ppsongd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e1nyel0zvl68ppsongd.png" alt=" " width="693" height="609"&gt;&lt;/a&gt;&lt;br&gt;
Open PowerShell as Administrator and type: &lt;br&gt;
&lt;code&gt;wsl --install&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Restart:&lt;/em&gt; You must restart your computer for the changes to take effect.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Finalize:&lt;/em&gt; After rebooting, a terminal will open. Follow the prompts to create a Username and Password. (Note: The password won't show characters as you type—this is normal!).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m6cz9yh8dt61a1dqib0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9m6cz9yh8dt61a1dqib0.png" alt=" " width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 3: The Essential Commands
&lt;/h2&gt;

&lt;p&gt;We first need to know how to navigate this environment. Here are some basic commands you can try out.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pwd&lt;/code&gt; (Print Working Directory):&lt;/strong&gt; Tells you exactly which folder you are currently in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ls&lt;/code&gt; (List):&lt;/strong&gt; Shows you what’s inside your current folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;cd&lt;/code&gt; (Change Directory):&lt;/strong&gt; Your "walking" command. Use &lt;code&gt;cd ..&lt;/code&gt; to go back one folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;mkdir folder_name&lt;/code&gt; (Make Directory):&lt;/strong&gt; Creates a new folder.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;touch filename&lt;/code&gt;:&lt;/strong&gt; Creates a brand new, empty file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;rm filename&lt;/code&gt; (Remove):&lt;/strong&gt; Deletes a file. &lt;strong&gt;Be careful:&lt;/strong&gt; there is no "Undo."&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Pro Productivity Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tab Completion:&lt;/strong&gt; Start typing a name and hit &lt;code&gt;Tab&lt;/code&gt;. Linux will finish the word for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Up Arrow:&lt;/strong&gt; Hit the up arrow to see commands you typed previously.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;clear&lt;/code&gt;:&lt;/strong&gt; Wipes the screen clean.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;Ctrl + C&lt;/code&gt;:&lt;/strong&gt; The "Emergency Stop" button if a command is stuck.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Part 4: Real-World Practice
&lt;/h2&gt;

&lt;p&gt;We’re going to create a workspace and download a real dataset (the famous Iris flower dataset).&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create a folder and redirect to it&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;linux_practice
&lt;span class="nb"&gt;cd &lt;/span&gt;linux_practice
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Create your own file
&lt;/h3&gt;

&lt;p&gt;Before we download anything, let's create a small file to store settings or write small notes.&lt;br&gt;
&lt;code&gt;touch my_notes.txt&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If you run &lt;code&gt;ls&lt;/code&gt;, you’ll see your new empty file sitting there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcohssn19djuh2jjq7lok.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcohssn19djuh2jjq7lok.png" alt=" " width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Download the data using 'wget'
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://raw.githubusercontent.com/dataprofessor/data/master/iris.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you run &lt;code&gt;ls&lt;/code&gt; again, you’ll see your new csv file added to the list.&lt;/p&gt;

&lt;h3&gt;
  
  
  Peek at the top 10 rows
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;head -n 10 iris.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgb224ic7e9mplyr9tzl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsgb224ic7e9mplyr9tzl.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 5: Mastering the Editors (Nano vs. Vim)
&lt;/h2&gt;

&lt;p&gt;On a remote server, you don't have VS Code. You have to edit files inside the terminal.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Nano:
&lt;/h3&gt;

&lt;p&gt;Nano is like a very basic version of Notepad that lives in your terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Type &lt;code&gt;nano iris.csv&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Editing:&lt;/strong&gt; Use your arrow keys to move the cursor and just start typing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Bottom Menu:&lt;/strong&gt; See those &lt;code&gt;^&lt;/code&gt; symbols? That means the &lt;strong&gt;Ctrl&lt;/strong&gt; key.&lt;/li&gt;
&lt;li&gt;To Save: Press &lt;code&gt;Ctrl + O&lt;/code&gt; (Write Out), then hit &lt;strong&gt;Enter&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;To Exit: Press &lt;code&gt;Ctrl + X&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  2. Vim:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;How to use it:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Type &lt;code&gt;vim iris.csv&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Normal Mode:&lt;/strong&gt; You start here. You &lt;em&gt;cannot&lt;/em&gt; type text yet. This mode is for moving around and running commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Insert Mode:&lt;/strong&gt; To start typing, press the letter &lt;strong&gt;&lt;code&gt;i&lt;/code&gt;&lt;/strong&gt;. You’ll see &lt;code&gt;-- INSERT --&lt;/code&gt; at the bottom. Now you can edit the file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Saving your work:&lt;/strong&gt; * First, hit the &lt;strong&gt;&lt;code&gt;Esc&lt;/code&gt;&lt;/strong&gt; key to leave "Insert Mode" and go back to "Normal Mode."&lt;/li&gt;
&lt;li&gt;Type &lt;strong&gt;&lt;code&gt;:wq&lt;/code&gt;&lt;/strong&gt; and hit &lt;strong&gt;Enter&lt;/strong&gt;. (&lt;code&gt;w&lt;/code&gt; means save/write, &lt;code&gt;q&lt;/code&gt; means quit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Emergency Exit:&lt;/strong&gt; If you messed up and want to leave &lt;em&gt;without&lt;/em&gt; saving, hit &lt;code&gt;Esc&lt;/code&gt;, then type &lt;strong&gt;&lt;code&gt;:q!&lt;/code&gt;&lt;/strong&gt; and hit &lt;strong&gt;Enter&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;You navigated a server, pulled data, and edited files using the terminal.👏&lt;/p&gt;

&lt;p&gt;You can also use a "cheat sheet" to guide you for the first few weeks. Happy coding!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>dataengineering</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Want to Learn Git and GitHub? A Step-by-Step Guide to Version Control</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Sun, 18 Jan 2026 13:09:29 +0000</pubDate>
      <link>https://forem.com/gathurum/want-to-learn-git-and-github-a-step-by-step-guide-to-version-control-dko</link>
      <guid>https://forem.com/gathurum/want-to-learn-git-and-github-a-step-by-step-guide-to-version-control-dko</guid>
      <description>&lt;p&gt;&lt;em&gt;If you’re like me, you probably heard people talking about "pushing to main" or "merging branches" and thought, “What on earth are they talking about?” &lt;br&gt;
It feels like everyone knows this secret language. But honestly? Once you get the hang of it, Git and GitHub are just a fancy way of making sure you don't accidentally delete your entire project.&lt;/em&gt;😊&lt;/p&gt;

&lt;p&gt;Let’s break it down.&lt;/p&gt;

&lt;p&gt;This guide will walk you through the fundamentals of Git and GitHub. You'll learn how to install them, connect them, and use them to manage your code effectively.&lt;/p&gt;
&lt;h2&gt;
  
  
  What is Git?
&lt;/h2&gt;

&lt;p&gt;Git is a &lt;strong&gt;version control system&lt;/strong&gt;. Think of it as a smart history book for your code. Every time you make changes to your project, Git can record them. This means you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Track modifications:&lt;/strong&gt; See exactly what changes were made, when, and by whom.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Revert:&lt;/strong&gt; Easily go back to an earlier state of your code if something goes wrong.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  What is GitHub?
&lt;/h2&gt;

&lt;p&gt;GitHub is a &lt;strong&gt;web-based hosting service for Git repositories&lt;/strong&gt;, like the cloud (think Google Drive).&lt;br&gt;
While Git is the tool you use on your computer to manage versions, GitHub is like a cloud storage and collaboration platform for your Git projects. It allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Store:&lt;/strong&gt; Keep a backup if your laptop decides to take a permanent nap.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share:&lt;/strong&gt; Make your projects accessible to others.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Collaborate:&lt;/strong&gt; Provide a central hub for others to work on a project with you without overwriting each other's work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Showcase:&lt;/strong&gt; Create a portfolio of your projects.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 1: Installing Git Bash
&lt;/h2&gt;

&lt;p&gt;Git Bash is a command-line interface (CLI) for Windows where you type commands to talk to Git.&lt;/p&gt;
&lt;h3&gt;
  
  
  For Windows:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Download Git Bash:&lt;/strong&gt; Go to the official Git website: &lt;a href="https://git-scm.com/download/win" rel="noopener noreferrer"&gt;https://git-scm.com/download/win&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Run the installer:&lt;/strong&gt; Follow the on-screen instructions. You can generally stick with the default options, but here is something to keep in mind:

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;"Choosing the default editor used by Git":&lt;/strong&gt; You can keep the default (Vim) or choose another editor you're familiar with (like VS Code, Notepad++, etc.).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;"Adjusting the name of the initial branch":&lt;/strong&gt; Choose "Let Git decide" (it usually defaults to &lt;code&gt;main&lt;/code&gt; now).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Verify the installation:&lt;/strong&gt; Open the Git Bash application, type &lt;code&gt;git --version&lt;/code&gt; and press Enter. You should see the Git version number.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Step 2: Configuring Git
&lt;/h2&gt;

&lt;p&gt;Before you start using Git, you need to tell it who you are.&lt;br&gt;
This information will be attached to your commits to track who is making changes.&lt;/p&gt;

&lt;p&gt;While still on Git Bash and run these two commands, replacing the placeholders with your name and email:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="s2"&gt;"Your Name"&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="s2"&gt;"your.email@example.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can verify your settings with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; &lt;span class="nt"&gt;--list&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3: Connecting the Two (The Handshake)
&lt;/h2&gt;

&lt;p&gt;You will first need a GitHub account. &lt;br&gt;
If you don't have one already, head over to &lt;a href="https://github.com/join" rel="noopener noreferrer"&gt;https://github.com/join&lt;/a&gt; and sign up.&lt;br&gt;
Follow the prompts to create your username, password, and verify your email.&lt;/p&gt;

&lt;p&gt;Now, to make your computer talk to GitHub without asking for your password every five seconds, we use something called an &lt;strong&gt;SSH Key&lt;/strong&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Generate a new SSH key:&lt;/strong&gt; In Git Bash, type:
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; ed25519 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"your@email.com"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Just keep hitting Enter until it stops.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start the SSH agent:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;ssh-agent &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Add your SSH key to the SSH agent:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-add ~/.ssh/id_ed25519
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Copy your public SSH key:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; ~/.ssh/id_ed25519.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;A bunch of random letters and numbers will pop up. Highlight and copy them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pass this to GitHub:&lt;/strong&gt; 
Go to your GitHub settings, look for &lt;strong&gt;SSH and GPG keys&lt;/strong&gt;, click &lt;strong&gt;New SSH Key&lt;/strong&gt;, and paste that wall of text in there.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Step 4: Your First Project (The Fun Part)
&lt;/h2&gt;

&lt;p&gt;Let’s say you have a folder on your computer called &lt;code&gt;my-cool-app&lt;/code&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tell Git to watch this folder:&lt;/strong&gt; Inside Git Bash, go to that folder and type
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Make a file:&lt;/strong&gt; Create a simple text file called &lt;code&gt;readme.txt&lt;/code&gt; and write "Hello world" inside it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "Add and Commit":&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"My first save point"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;br&gt;
 (This tells Git, "Hey, look at all the changes I just made!").&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 5: Sending it to the Cloud (Pushing)
&lt;/h2&gt;

&lt;p&gt;Now, go to GitHub, create a "New Repository," and name it whatever you want. GitHub will give you a link that looks like &lt;code&gt;git@github.com:yourname/your-repo.git&lt;/code&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Link them up:&lt;/strong&gt; Type,
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git remote add origin &lt;span class="o"&gt;[&lt;/span&gt;PASTE YOUR LINK HERE]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Send it!:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push &lt;span class="nt"&gt;-u&lt;/span&gt; origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Refresh your GitHub page, and boom! Your code is on the internet.&lt;/p&gt;
&lt;h2&gt;
  
  
  Step 6: Pulling it Back
&lt;/h2&gt;

&lt;p&gt;If you ever go to a different computer, or if a friend changes your code on GitHub, you need to bring those changes back to your machine.&lt;/p&gt;

&lt;p&gt;Just type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It’s like syncing your phone—it grabs the newest version from the cloud and puts it on your computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;That’s pretty much the "Big Three":&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Add&lt;/strong&gt; (Pick what you want to save)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Commit&lt;/strong&gt; (Save it)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Push&lt;/strong&gt; (Send it to GitHub)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Don't worry if you forget the commands at first. I still have to Google them half the time. &lt;br&gt;
Just keep playing around with them, and eventually, it’ll feel like second nature. &lt;br&gt;
Happy coding!🥳&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>github</category>
      <category>git</category>
      <category>datascience</category>
    </item>
    <item>
      <title>SQL Joins Explained: Case Example</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Wed, 13 Sep 2023 01:55:44 +0000</pubDate>
      <link>https://forem.com/gathurum/sql-joins-explained-case-example-2kgd</link>
      <guid>https://forem.com/gathurum/sql-joins-explained-case-example-2kgd</guid>
      <description>&lt;p&gt;Structured Query Language(SQL) is a computer language for storing, manipulating, and retrieving data stored in a relational database.&lt;/p&gt;

&lt;p&gt;SQL Joins are like clauses used to combine records from two or more tables in a database, just as the name(join) means.&lt;/p&gt;

&lt;p&gt;In this article, you will learn, using a case example, the different types of joins, when, and how they are used. Be sure to check for “&lt;strong&gt;bonus joins”&lt;/strong&gt; included at the end of the article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Data
&lt;/h2&gt;

&lt;p&gt;We will use data from these 2 tables to show various ways to display employees from John Smith's company.&lt;/p&gt;

&lt;h3&gt;
  
  
  Departments Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Department_Id&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Employees Table
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee_Id&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Department_Id&lt;/th&gt;
&lt;th&gt;Job_Role&lt;/th&gt;
&lt;th&gt;Manager_Id&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;Null&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;Null&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The code below shows the syntax for writing a JOIN:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;columns&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;table1&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;table2&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;table1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;column1&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;table2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;column1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Types of Joins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There are four major types of joins in SQL, as listed below:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Inner Join&lt;/li&gt;
&lt;li&gt;Left Join&lt;/li&gt;
&lt;li&gt;Right Join&lt;/li&gt;
&lt;li&gt;Full Join&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Inner Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It creates a result table that displays information &lt;strong&gt;common&lt;/strong&gt; between two tables based on a shared piece of information. &lt;/p&gt;

&lt;p&gt;It is the most important and frequently used of the joins.&lt;/p&gt;

&lt;p&gt;In this case, we could use it to display employees from the departments listed in the first table.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Job_Role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;
&lt;span class="k"&gt;INNER&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
 &lt;span class="c1"&gt;-- You can replace the keyword INNER JOIN with JOIN&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Job_Role&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Left Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;LEFT JOIN&lt;/em&gt; returns &lt;strong&gt;all&lt;/strong&gt; rows from the left table, plus matched values from the right table or NULL in case of no match.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Note: The left table refers to the table that appears before the "LEFT JOIN" keywords in your SQL query. Same case applies when using RIGHT JOIN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;We could use left join to retrieve a list of all employees along with their department names. If an employee doesn't belong to a department, display NULL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee_Id&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can use the COALESCE() function to replace NULL values with more relatable user-defined values.&lt;/p&gt;

&lt;p&gt;i.e. If an employee doesn't belong to a department, display "No Department" instead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="n"&gt;COALESCE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;"No Department"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;LEFT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Employee_Id&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;SALES&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;No Department&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Right Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;SQL RIGHT JOIN&lt;/em&gt; returns all rows from the right table, even if there are no matches&lt;br&gt;
in the left table. Not so different from the LEFT JOIN.&lt;/p&gt;

&lt;p&gt;In this case, we could view employees and their various departments&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;Department_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;COALESCE&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;"No Employee"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Full_Name&lt;/span&gt; 
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;RIGHT&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Department_Name&lt;/th&gt;
&lt;th&gt;Full_Name&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Research&lt;/td&gt;
&lt;td&gt;No Employee&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Full Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;SQL FULL JOIN&lt;/em&gt; combines the results of both left and right outer joins.&lt;/p&gt;

&lt;p&gt;The joined table will contain all records from both tables and fill in NULLs for missing&lt;br&gt;
matches on either side.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Job_Role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
&lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; 
&lt;span class="k"&gt;FULL&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Department_Id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;EMPLOYEE_ID&lt;/th&gt;
&lt;th&gt;FULL_NAME&lt;/th&gt;
&lt;th&gt;JOB_ROLE&lt;/th&gt;
&lt;th&gt;DEPARTMENT_ID&lt;/th&gt;
&lt;th&gt;DEPARTMENT_NAME&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;td&gt;CEO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Executive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;HR&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Sales&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;NULL&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Research&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bonus Joins
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Self Join&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;em&gt;SELF JOIN&lt;/em&gt; is typically not a join type but a special way of joining a table to itself. You may want to combine rows in a table based on a related column present in the table.&lt;/p&gt;

&lt;p&gt;It is commonly used when you need to traverse a hierarchical structure where each row references another row in the same table &lt;/p&gt;

&lt;p&gt;OR&lt;/p&gt;

&lt;p&gt;When comparing data within rows in the same table.&lt;/p&gt;

&lt;p&gt;In this case, we will use self-join in the employees’ table to display the employee-manager relationship. Each employee record contains a reference to the manager's ID, allowing us to retrieve more information about the managers by adding another column, “Manager_Name”. In Data Science, this is an example of &lt;strong&gt;&lt;em&gt;feature engineering.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Job_Role&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Manager_Id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Full_Name&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;Manager_Name&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt; 
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Manager_Id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Employee_Id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should get the results below&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Result&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;EMPLOYEE_ID&lt;/th&gt;
&lt;th&gt;FULL_NAME&lt;/th&gt;
&lt;th&gt;JOB_ROLE&lt;/th&gt;
&lt;th&gt;DEPARTMENT_ID&lt;/th&gt;
&lt;th&gt;MANAGER_NAME&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;td&gt;CFO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;td&gt;CIO&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;td&gt;HR Manager&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;John Smith&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;td&gt;Sales Manager&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Sarah Goodes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;td&gt;Development Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;td&gt;Support Manager&lt;/td&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Wayne Ablett&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Matthew Swan&lt;/td&gt;
&lt;td&gt;HR Representative&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Michelle Carey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;9&lt;/td&gt;
&lt;td&gt;Stephanie Richardson&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;Tony Grant&lt;/td&gt;
&lt;td&gt;Salesperson&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Chris Matthews&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;11&lt;/td&gt;
&lt;td&gt;Jenna Lockett&lt;/td&gt;
&lt;td&gt;Front-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;12&lt;/td&gt;
&lt;td&gt;Michael Dunstall&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;Jane Voss&lt;/td&gt;
&lt;td&gt;Back-End Developer&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Andrew Judd&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;Anthony Hird&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;Natalie Rocca&lt;/td&gt;
&lt;td&gt;Support&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Danielle McLeod&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's most of what you need to know about SQL Joins. Hopefully, you found this information helpful. Feel free to share it with anyone who's having a hard time with Joins, and keep learning! 😊&lt;/p&gt;

&lt;p&gt;If you have any questions, please leave them in the comments section below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>datascience</category>
      <category>joins</category>
      <category>programming</category>
    </item>
    <item>
      <title>Data Engineering 102: Introduction to Python for Data Engineering</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Sun, 11 Sep 2022 20:08:07 +0000</pubDate>
      <link>https://forem.com/gathurum/data-engineering-102-introduction-to-python-for-data-engineering-4m2l</link>
      <guid>https://forem.com/gathurum/data-engineering-102-introduction-to-python-for-data-engineering-4m2l</guid>
      <description>&lt;p&gt;Python is today’s most popular programming language with endless applications in various fields. It is ideally suited for deployment, analysis, and maintenance thanks to its flexible and dynamic nature. &lt;br&gt;
It is one of the crucial skills required in the field of Data Engineering, to create Data Pipelines, set up Statistical Models, and perform a thorough analysis of them.&lt;br&gt;
To start using python, you'll need it installed in the Operating system you're currently using be it Linux, Mac OS, or the most common Windows. &lt;br&gt;
Python provides an ample amount of libraries and packages for various applications. These are the top 5 Python for Data Engineering packages. They include:&lt;/p&gt;

&lt;p&gt;-Pandas&lt;br&gt;
-pygrametl&lt;br&gt;
-petl&lt;br&gt;
-Beautiful Soup&lt;br&gt;
-SciPy&lt;/p&gt;

&lt;p&gt;But firstly, in Learning python, these are some of the topics you should perhaps start with:-&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.MATH EXPRESSIONS&lt;/strong&gt;&lt;br&gt;
Syntax Math Meaning&lt;br&gt;
a+b a+b addition&lt;br&gt;
a-b a-b) subtraction&lt;br&gt;
a*b a\times b\ multiplication&lt;br&gt;
a/b a\div b\, division (see note below)&lt;br&gt;
a//b a\div b\ division - in python 2.2 &amp;amp; abv&lt;br&gt;
a%b a mod b modulo&lt;br&gt;
-a -a negation&lt;br&gt;
abs(a) |a| absolute value&lt;br&gt;
a**b a^{b} exponent&lt;br&gt;
math.sqrt square root&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Strings&lt;/strong&gt;&lt;br&gt;
Strings in python are surrounded by either single quotation marks or double quotation marks.&lt;br&gt;
e.g.&lt;br&gt;
'hello' is the same as "hello".&lt;/p&gt;

&lt;p&gt;You can display a string literal with the print() function&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Variables&lt;/strong&gt;&lt;br&gt;
Variables are containers for storing data values.&lt;br&gt;
A variable is created the moment you first assign a value to it.&lt;br&gt;
x = 5&lt;br&gt;
y = "John"&lt;br&gt;
print(x)&lt;br&gt;
print(y)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Loops&lt;/strong&gt;&lt;br&gt;
Python provides three ways for executing the loops&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(a)While Loop:&lt;/em&gt;&lt;br&gt;
In python, a while loop is used to execute a block of statements repeatedly until a given condition is satisfied. And when the condition becomes false, the line immediately after the loop in the program is executed.&lt;/p&gt;

&lt;p&gt;while expression:&lt;br&gt;
statement(s)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(b) For in Loop:&lt;/em&gt;&lt;br&gt;
For loops are used for sequential traversal. For example: traversing a list or string or array etc. In Python, there is no C style for loop, i.e., for (i=0; i&amp;lt;n; i++). There is “for in” loop which is similar to for each loop in other languages. Let us learn how to use for in loop for sequential traversals&lt;/p&gt;

&lt;p&gt;for iterator_var in sequence:&lt;br&gt;
statements(s)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(c)Nested Loops:&lt;/em&gt;&lt;br&gt;
Python programming language allows using one loop inside another loop. The following section shows a few examples to illustrate the concept.&lt;/p&gt;

&lt;p&gt;Syntax:&lt;/p&gt;

&lt;p&gt;while expression:&lt;br&gt;
while expression:&lt;br&gt;
statement(s)&lt;br&gt;
statement(s)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Functions&lt;/strong&gt;&lt;br&gt;
A function is a block of code that only runs when it is called.&lt;/p&gt;

&lt;p&gt;The basic syntax is:&lt;br&gt;
def my_function():&lt;br&gt;
print("Hello from a function")&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. List, Tuples, Dictionary, and sets&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It's also important to learn how to connect databases with:-&lt;br&gt;
1.BOTO3&lt;br&gt;
2.Psycopg2&lt;br&gt;
3.MySQL&lt;/p&gt;

&lt;p&gt;So, as long as there is data to process, data engineers will be in demand. I wish you all the best as you choose to pursue this journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;br&gt;
Any questions? Leave your comment below to start fantastic discussions!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
      <category>data</category>
    </item>
    <item>
      <title>Data Engineering 101: Introduction to Data Engineering</title>
      <dc:creator>Gathuru_M</dc:creator>
      <pubDate>Sun, 21 Aug 2022 18:32:46 +0000</pubDate>
      <link>https://forem.com/gathurum/data-engineering-101-introduction-to-data-engineering-5f7f</link>
      <guid>https://forem.com/gathurum/data-engineering-101-introduction-to-data-engineering-5f7f</guid>
      <description>&lt;p&gt;&lt;strong&gt;Data Engineering&lt;/strong&gt; is the process of building data pipelines and making quality data available for efficient data-driven decision-making.&lt;br&gt;
A person who performs these activities is called a Data Engineer.&lt;/p&gt;

&lt;p&gt;But what are data pipelines exactly...&lt;br&gt;
In data processing, there is the flow of data from say a point A to B to C i.e., from an application to a data warehouse or from a data source to the database. This series of processing steps is called a &lt;strong&gt;&lt;em&gt;data pipeline&lt;/em&gt;&lt;/strong&gt;.&lt;br&gt;
In these series of steps, each step delivers an output that is the input to the next step. This continues until the pipeline is complete. However, in some cases, independent steps may be run in parallel.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43owm2xfucg3sq316gmv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F43owm2xfucg3sq316gmv.png" alt="Data Pipeline Patterns" width="400" height="224"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s the difference between a data analyst and a data engineer?&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;Data scientists&lt;/em&gt; and &lt;em&gt;data analysts&lt;/em&gt; analyze data sets to gain knowledge and insights. &lt;em&gt;Data engineers&lt;/em&gt; on the other hand build systems for collecting, validating, and preparing that high-quality data which is then used by data scientists to promote better business decisions.&lt;/p&gt;

&lt;p&gt;With that said, these are some of the &lt;strong&gt;Essential skills required to be a Data Engineer in 2022&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data Structures&lt;/li&gt;
&lt;li&gt;SQL&lt;/li&gt;
&lt;li&gt;NoSQL&lt;/li&gt;
&lt;li&gt;Understanding of Data Lakes and Data Warehouse&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;li&gt;Big Data - Hadoop, Apache Spark(PySpark), Hive, and Apache Kafka&lt;/li&gt;
&lt;li&gt;Cloud Services - AWS, Microsoft Azure, Google Cloud, Snowflake, etc.&lt;/li&gt;
&lt;li&gt;Visualization - Tableau, PowerBI, Looker, Qlikview, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I wish you all the best as you choose to pursue this journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Thanks for reading!&lt;/strong&gt;&lt;br&gt;
Any questions? Leave your comment below to start fantastic discussions!&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
      <category>data</category>
    </item>
  </channel>
</rss>
