<?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>DEV Community: PHILIP KAPLONG (Sirphilip)</title>
    <description>The latest articles on DEV Community by PHILIP KAPLONG (Sirphilip) (@sirphilip).</description>
    <link>https://dev.to/sirphilip</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%2F3708628%2Feb8b9f32-1807-45e7-a199-1e68a7cd93f0.png</url>
      <title>DEV Community: PHILIP KAPLONG (Sirphilip)</title>
      <link>https://dev.to/sirphilip</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sirphilip"/>
    <language>en</language>
    <item>
      <title>SQL Joins and Window Functions- Ultimate Guide</title>
      <dc:creator>PHILIP KAPLONG (Sirphilip)</dc:creator>
      <pubDate>Tue, 03 Mar 2026 11:25:15 +0000</pubDate>
      <link>https://dev.to/sirphilip/sql-joins-and-window-functions-ultimate-guide-2c1k</link>
      <guid>https://dev.to/sirphilip/sql-joins-and-window-functions-ultimate-guide-2c1k</guid>
      <description>&lt;h1&gt;
  
  
  SQL JOINS
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is a JOIN?
&lt;/h2&gt;

&lt;p&gt;A JOIN is used to &lt;strong&gt;combine data from two or more tables&lt;/strong&gt; based on a related column. Think of it like connecting two lists: one of employees, another of departments. You use a common field (like &lt;code&gt;department_id&lt;/code&gt;) to link them.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Joins
&lt;/h2&gt;

&lt;h3&gt;
  
  
  INNER JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Returns &lt;strong&gt;only the rows that have matching values&lt;/strong&gt; in both tables.&lt;/li&gt;
&lt;li&gt;Example: Only employees assigned to a department will appear; employees without a department are ignored.&lt;/li&gt;
&lt;li&gt;Syntax:
&lt;/li&gt;
&lt;/ul&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;name&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;INNER&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;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="o"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  LEFT JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Returns &lt;strong&gt;all rows from the left table&lt;/strong&gt;, and matching rows from the right table.&lt;/li&gt;
&lt;li&gt;If there’s no match in the right table, it returns NULL.&lt;/li&gt;
&lt;li&gt;Example: All employees appear, even if they don’t belong to any department.
&lt;/li&gt;
&lt;/ul&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;name&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;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="o"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  RIGHT JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Returns &lt;strong&gt;all rows from the right table&lt;/strong&gt;, and matching rows from the left table.&lt;/li&gt;
&lt;li&gt;If there’s no match in the left table, it returns NULL.&lt;/li&gt;
&lt;li&gt;Example: All departments appear, even if no employee is assigned.
&lt;/li&gt;
&lt;/ul&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;name&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;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;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="o"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  FULL OUTER JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Returns &lt;strong&gt;all rows from both tables&lt;/strong&gt;, filling in NULLs where no match exists.&lt;/li&gt;
&lt;li&gt;Example: Employees without departments and departments without employees will all appear.
&lt;/li&gt;
&lt;/ul&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;name&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;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="o"&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  CROSS JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Returns &lt;strong&gt;every possible combination&lt;/strong&gt; of rows from both tables.&lt;/li&gt;
&lt;li&gt;Example: 3 employees × 3 departments = 9 rows.&lt;/li&gt;
&lt;li&gt;Use with caution as it can create very large results.
&lt;/li&gt;
&lt;/ul&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="o"&gt;*&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;CROSS&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  NATURAL JOIN
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Automatically joins tables using &lt;strong&gt;all columns with the same name&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You don’t write the &lt;code&gt;ON&lt;/code&gt; condition.&lt;/li&gt;
&lt;li&gt;Example: Employees and departments both have &lt;code&gt;department_id&lt;/code&gt;. SQL will join them automatically using this column.
&lt;/li&gt;
&lt;/ul&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="o"&gt;*&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;NATURAL&lt;/span&gt; &lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;departments&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; If a new column with the same name is added later, the join might change results unexpectedly. Use explicit joins in real systems for safety.&lt;/p&gt;

&lt;h1&gt;
  
  
  WINDOW FUNCTIONS
&lt;/h1&gt;

&lt;h2&gt;
  
  
  What is a Window Function?
&lt;/h2&gt;

&lt;p&gt;A window function performs calculations &lt;strong&gt;across rows related to the current row&lt;/strong&gt; while keeping all original rows intact. Unlike &lt;code&gt;GROUP BY&lt;/code&gt;, which reduces rows to summaries, window functions &lt;strong&gt;add new computed columns without removing data&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Syntax
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;FUNCTION&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;column&lt;/span&gt;
    &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;column&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;OVER()&lt;/code&gt; → indicates a window function.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;PARTITION BY&lt;/code&gt; → divides data into groups.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ORDER BY&lt;/code&gt; → sets the order of rows within each group.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ranking Functions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  ROW_NUMBER()
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Assigns a unique number to each row in the result.&lt;/li&gt;
&lt;li&gt;No ties are allowed; every row is unique.
&lt;/li&gt;
&lt;/ul&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&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;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&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;row_num&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  RANK()
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Assigns the same rank to ties, but skips numbers for the next rank.&lt;/li&gt;
&lt;li&gt;Example: Two employees with the same salary share rank 1, next rank becomes 3.
&lt;/li&gt;
&lt;/ul&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&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;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&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;rank&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  DENSE_RANK()
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Assigns the same rank to ties but does &lt;strong&gt;not skip numbers&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Example: Two employees share rank 1, next rank is 2.
&lt;/li&gt;
&lt;/ul&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;DENSE_RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&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;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&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;dense_rank&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SUM() OVER() — Running Totals
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Calculates cumulative totals while keeping all rows.&lt;/li&gt;
&lt;li&gt;Example: Adding salaries cumulatively for a payroll report.
&lt;/li&gt;
&lt;/ul&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;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;salary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&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;employee_id&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;running_total&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  PARTITION + ORDER TOGETHER
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You can rank or sum values &lt;strong&gt;within a group&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Example: Ranking employees &lt;strong&gt;per department&lt;/strong&gt; by salary.
&lt;/li&gt;
&lt;/ul&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;name&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;salary&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;RANK&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
           &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&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;salary&lt;/span&gt; &lt;span class="k"&gt;DESC&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;dept_rank&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;employees&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Ranking resets for each department.&lt;/li&gt;
&lt;li&gt;Useful for finding top performers per group.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  When to Use What
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JOINS&lt;/strong&gt; → Combine multiple tables for connected data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GROUP BY&lt;/strong&gt; → Summarize data, reduces rows.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WINDOW FUNCTIONS&lt;/strong&gt; → Keep rows and perform calculations like ranking, running totals, or comparisons within groups.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Key Takeaways
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Joins&lt;/strong&gt; connect tables:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;INNER → only matching rows&lt;/li&gt;
&lt;li&gt;LEFT → keep all left rows&lt;/li&gt;
&lt;li&gt;RIGHT → keep all right rows&lt;/li&gt;
&lt;li&gt;FULL → keep everything&lt;/li&gt;
&lt;li&gt;NATURAL → automatic join on same-named columns&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GROUP BY&lt;/strong&gt; → reduces rows to summary data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Window Functions&lt;/strong&gt; → keep all rows, add extra calculations:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;PARTITION BY → group rows inside the function&lt;/li&gt;
&lt;li&gt;ORDER BY → controls calculation order&lt;/li&gt;
&lt;li&gt;ROW_NUMBER / RANK / DENSE_RANK → ranking functions&lt;/li&gt;
&lt;li&gt;SUM() OVER → running totals&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>data</category>
      <category>analytics</category>
      <category>sqlserver</category>
      <category>database</category>
    </item>
    <item>
      <title>How Analysts Turn Messy Data into Clear Answers with Power BI</title>
      <dc:creator>PHILIP KAPLONG (Sirphilip)</dc:creator>
      <pubDate>Mon, 09 Feb 2026 17:34:40 +0000</pubDate>
      <link>https://dev.to/sirphilip/how-analysts-turn-messy-data-into-clear-answers-with-power-bi-2pl9</link>
      <guid>https://dev.to/sirphilip/how-analysts-turn-messy-data-into-clear-answers-with-power-bi-2pl9</guid>
      <description>&lt;p&gt;Imagine your data is a pile of papers on a messy office desk, reports, all mixed up. A data analyst’s job is to tidy that desk, find the important information, and use it to tell a story that helps a company make good decisions. Power BI is one of the favorite tool for doing exactly that.&lt;/p&gt;

&lt;p&gt;Let’s break down the three-step magic trick they perform: cleaning data, using a special language called &lt;strong&gt;DAX&lt;/strong&gt;, and building dashboards.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 1: Taming the "Messy Data"
&lt;/h1&gt;

&lt;p&gt;Real-world data is rarely perfect. It comes from different places like spreadsheets, databases, and websites. You might have duplicates, misspelled names, blank cells, or dates formatted wrong. This is what we call &lt;em&gt;"messy data."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Power BI, the first stop is usually &lt;strong&gt;Power Query Editor&lt;/strong&gt;. Think of this as a data cleaning workshop. Here, the analyst can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove duplicates (like the same sales entry listed twice).&lt;/li&gt;
&lt;li&gt;Fill in blanks or remove empty rows.&lt;/li&gt;
&lt;li&gt;Standardize text &lt;/li&gt;
&lt;li&gt;Split columns (like separating a full name into "First Name" and "Last Name").
This process is called &lt;strong&gt;data transformation&lt;/strong&gt;. The goal is to turn that messy pile into a neat, organized table that Power BI can understand and work with efficiently.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Step 2: The Superpower of DAX (Data Analysis Expressions)
&lt;/h1&gt;

&lt;p&gt;Once the data is clean, the analyst needs to calculate things. Basic math like sums and averages is easy. But what if you need to answer a specific question like, "How much did sales grow from last month?" or "What is the year-to-date total for each salesperson?"&lt;/p&gt;

&lt;p&gt;This is where DAX comes in. DAX is a simple formula language used in Power BI. It looks a lot like Excel formulas, but it’s built for analyzing relationships between data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DAX in Simple Terms:&lt;/strong&gt;&lt;br&gt;
Let’s say you have a Sales table. A simple DAX formula to calculate total sales would be:&lt;br&gt;
&lt;code&gt;Total Sales = SUM(Sales[Amount])&lt;/code&gt;&lt;br&gt;
This creates a new measure called "Total Sales" that adds up every number in the Amount column.&lt;/p&gt;

&lt;p&gt;A more powerful DAX formula might calculate sales from the previous month:&lt;br&gt;
&lt;code&gt;Sales Last Month = CALCULATE([Total Sales]&lt;/code&gt;, PREVIOUSMONTH('Date'[Date]))`&lt;br&gt;
This formula takes our "Total Sales" measure but changes the "filter" to look at the previous month automatically.&lt;/p&gt;

&lt;p&gt;DAX is the analyst’s tool for creating the custom metrics that answer the business’s most important questions. You don’t need to be a programmer to learn basic DAX—it’s about learning to ask the data the right questions.&lt;/p&gt;

&lt;h1&gt;
  
  
  Step 3: Building the "Single Source of Truth" Dashboard
&lt;/h1&gt;

&lt;p&gt;Clean data and smart calculations are useless if no one can understand them. The final step is visualization—building the dashboard.&lt;/p&gt;

&lt;p&gt;A Power BI dashboard is a one-page summary of your most important metrics, often called &lt;em&gt;KPIs (Key Performance Indicators)&lt;/em&gt;. It uses simple, powerful visuals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Bar/Column Charts:&lt;/em&gt; To compare things (e.g., sales by region).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Line Charts:&lt;/em&gt; To show trends over time (e.g., monthly website visitors).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Gauges &amp;amp; KPI Cards:&lt;/em&gt; To show a number and its target (e.g., Current Revenue vs. Goal).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Slicers:&lt;/em&gt; These are like interactive filters. Click "Q2" on a slicer, and every chart on the page instantly updates to show only data from the second quarter.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The magic here is &lt;strong&gt;interactivity&lt;/strong&gt;. A good dashboard isn’t a static report. A manager can click on a bar for "Product A" and instantly see which customers bought it and which salesperson sold it. They can drill down from a yearly summary to a weekly view.&lt;/p&gt;

&lt;p&gt;This turns the dashboard into a conversation tool. Instead of asking, "Can you get me the Q3 report for the Midwest?" and waiting days, the user can find the answer in seconds by clicking on the dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;From Action to Impact&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So, how does this translate into action?&lt;/p&gt;

&lt;p&gt;1.Clean Data provides trust. Decision-makers can be confident they’re looking at accurate information.&lt;br&gt;
2.DAX Measures provide insight. They answer the "why" and "what’s next" by showing trends, growth, and performance against goals.&lt;br&gt;
3.The Interactive Dashboard provides clarity and speed. It puts insights in front of the right people in an understandable way, enabling fast, informed decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-World Example:&lt;/strong&gt; A store manager sees on their daily Power BI dashboard that a specific product’s sales have suddenly dropped in one location. With a few clicks, they drill down and see a spike in customer returns for that item at that store. They immediately call the store, discovering a damaged shipment. They can then stop the sale, address the quality issue, and protect customer satisfaction—all within minutes.&lt;/p&gt;

&lt;p&gt;In short, Power BI analysts are translators. They take the messy, technical language of raw data and translate it into a clear, visual story that anyone in the company can understand and act upon. They bridge the gap between information and action, helping businesses move from asking "What happened?" to knowing "What should we do next?"&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>datascience</category>
      <category>beginners</category>
      <category>analyst</category>
    </item>
    <item>
      <title>Schemas and Data Modeling in Power BI: The Complete Beginner-to-Intermediate Guide</title>
      <dc:creator>PHILIP KAPLONG (Sirphilip)</dc:creator>
      <pubDate>Sun, 01 Feb 2026 17:42:33 +0000</pubDate>
      <link>https://dev.to/sirphilip/schemas-and-data-modeling-in-power-bi-the-complete-beginner-to-intermediate-guide-1956</link>
      <guid>https://dev.to/sirphilip/schemas-and-data-modeling-in-power-bi-the-complete-beginner-to-intermediate-guide-1956</guid>
      <description>&lt;p&gt;If you want your Power BI dashboards to be fast, accurate, and scalable, you must understand schemas and data modeling.&lt;/p&gt;

&lt;p&gt;Many beginners jump straight into visuals and DAX, but the real power of Power BI lies in how well your data is structured behind the scenes.&lt;/p&gt;

&lt;p&gt;This article breaks down schemas and data modeling in a simple, practical way—with real examples and best practices.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Understanding Schemas in Power BI
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;What is a Schema?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;schema&lt;/strong&gt; is the logical structure of your data. It defines:&lt;/p&gt;

&lt;p&gt;What tables exist&lt;/p&gt;

&lt;p&gt;What columns each table contains&lt;/p&gt;

&lt;p&gt;How tables are connected&lt;/p&gt;

&lt;p&gt;Think of a schema as the &lt;strong&gt;blueprint of a building&lt;/strong&gt;. Without a good blueprint, the building may stand—but it will be weak, slow, and unreliable.&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%2F6gpqyuzoufh2wx7nowrz.jpg" 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%2F6gpqyuzoufh2wx7nowrz.jpg" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. What is Data Modeling?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data modeling&lt;/strong&gt; is the process of designing how data is structured, stored, and related so it can be analyzed efficiently.&lt;/p&gt;

&lt;p&gt;It involves:&lt;/p&gt;

&lt;p&gt;Identifying fact and dimension tables&lt;/p&gt;

&lt;p&gt;Defining relationships&lt;/p&gt;

&lt;p&gt;Optimizing structure for performance&lt;/p&gt;

&lt;p&gt;Preparing data for reporting and DAX calculations&lt;/p&gt;

&lt;p&gt;In Power BI, data modeling happens mainly in the &lt;strong&gt;Model View.&lt;/strong&gt;&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%2F5ieq6tqdkquzhu8utov6.jpg" 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%2F5ieq6tqdkquzhu8utov6.jpg" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Fact Tables vs Dimension Tables
&lt;/h1&gt;

&lt;p&gt;Before understanding schemas, you must understand these two core concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact Tables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;fact table&lt;/strong&gt; stores measurable, numeric data.&lt;/p&gt;

&lt;p&gt;Examples of facts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Sales amount&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quantity sold&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Profit&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Discounts&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sales Fact Table&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;OrderID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;CustomerID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ProductID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DateID&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Quantity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Revenue&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Profit&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Very large&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Contains foreign keys&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stores transactional data&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fbhb5ny0o08f3pyupewmq.jpg" 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%2Fbhb5ny0o08f3pyupewmq.jpg" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Types of Schemas in Business Intelligence
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;4.1 Star Schema&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;star schema&lt;/strong&gt; is the most common data model in Power BI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Structure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;One central fact table&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Multiple dimension tables connected directly to it&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The layout looks like a star&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fact Table:&lt;/strong&gt; Sales&lt;/p&gt;

&lt;p&gt;OrderID, CustomerID, ProductID, DateID, Revenue, Quantity&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dimension Tables:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Customer, Product, Date, Geography&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fast performance&lt;/p&gt;

&lt;p&gt;Simple to understand&lt;/p&gt;

&lt;p&gt;Works well with DAX&lt;/p&gt;

&lt;p&gt;Recommended by Microsoft&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.2 Snowflake Schema&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;snowflake schema&lt;/strong&gt; is a more complex version of the star schema where dimensions are split into multiple related tables.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Customer → City → Region → Country&lt;/p&gt;

&lt;p&gt;Product → Category → Department&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reduces redundancy&lt;/p&gt;

&lt;p&gt;Saves storage&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cons:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;More complex&lt;/p&gt;

&lt;p&gt;Slower queries&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.3 Galaxy Schema&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;galaxy schema&lt;/strong&gt; has multiple fact tables sharing the same dimensions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fact tables: Sales, Inventory, Finance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shared dimensions: Date, Product, Customer&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  5. Power BI Data Modeling Best Practices
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Prefer star schema&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use a dedicated date table&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Avoid many-to-many relationships&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove unnecessary columns&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use clear naming (e.g., DimCustomer, FactSales)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  6. Why Data Modeling Matters
&lt;/h1&gt;

&lt;p&gt;Good data modeling leads to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Faster dashboards&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Accurate insights&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Scalable models&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Easy-to-use reports&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simply put:&lt;br&gt;
&lt;strong&gt;A strong model = powerful analytics.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>analytics</category>
      <category>database</category>
      <category>datascience</category>
    </item>
    <item>
      <title>How I Started Doing Data Analysis with MS Excel</title>
      <dc:creator>PHILIP KAPLONG (Sirphilip)</dc:creator>
      <pubDate>Sun, 25 Jan 2026 12:13:29 +0000</pubDate>
      <link>https://dev.to/sirphilip/how-i-started-doing-data-analysis-with-ms-excel-i4g</link>
      <guid>https://dev.to/sirphilip/how-i-started-doing-data-analysis-with-ms-excel-i4g</guid>
      <description>&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%2F1hn8ee2248zcx0ufpuve.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%2F1hn8ee2248zcx0ufpuve.png" alt=" " width="300" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let me be honest.&lt;/p&gt;

&lt;p&gt;I didn’t wake up one day and say &lt;strong&gt;“Yeah, today I become a data analyst.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It started with Excel. Just rows. Columns. Confusion. And a LOT of scrolling.&lt;/p&gt;

&lt;p&gt;But somewhere between cleaning messy data and making my first chart, I realized something wild:&lt;strong&gt;&lt;em&gt;Excel is basically data analysis in disguise.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you’re a beginner and Excel feels scary, relax you’re exactly where you’re supposed to be. In this article, I’ll walk you through how &lt;strong&gt;MS Excel can be used for basic data analysis&lt;/strong&gt;, using simple language, real-life vibes, and practical examples.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Understanding Data in Excel (The Foundation)
&lt;/h1&gt;

&lt;p&gt;Before analysis, there must be &lt;em&gt;data&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;In Excel, data usually lives in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Rows → individual records (one person, one sale, one day)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Columns → variables (name, age, salary, date, etc.)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of Excel like a table in real life:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Each &lt;em&gt;row&lt;/em&gt; is one story&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each &lt;em&gt;column&lt;/em&gt; is one detail about that story&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Row 2 = Bongo’s details&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Column C = everyone’s salary&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fazle04l2k75sxg66zh60.jpg" 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%2Fazle04l2k75sxg66zh60.jpg" alt="A Simple Excel Table with Headers" width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Rule of thumb:&lt;/p&gt;

&lt;p&gt;If your data has clear headers and no empty random rows, you’re already winning.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Cleaning Data (Because Real Data Is Always Messy)
&lt;/h1&gt;

&lt;p&gt;Nobody talks about this part enough.&lt;/p&gt;

&lt;p&gt;Real data is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Misspelled&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Has extra spaces&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Mixed uppercase and lowercase&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sometimes straight-up wrong&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Before analysis, we clean.&lt;/p&gt;

&lt;h1&gt;
  
  
  Common cleaning tasks in Excel:
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Removing extra spaces using &lt;code&gt;TRIM()&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Making text consistent using &lt;code&gt;UPPER()&lt;/code&gt;, &lt;code&gt;LOWER()&lt;/code&gt;, or &lt;code&gt;PROPER()&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Removing duplicates&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fixing date and number formats&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"  bongo lala  " → "Bongo Lala"&lt;/code&gt;&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%2Flgdztxl48sngxzs7f0kj.jpg" 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%2Flgdztxl48sngxzs7f0kj.jpg" alt="A Messy text vs A Cleaned text" width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Story moment: The first time I cleaned data, I thought I was doing something wrong because the numbers suddenly made sense. Turns out… that’s the point.&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Sorting and Filtering (Finding Meaning Fast)
&lt;/h1&gt;

&lt;p&gt;Imagine having 500 rows of data and trying to “just look” for answers.&lt;/p&gt;

&lt;p&gt;Yeah… no.&lt;/p&gt;

&lt;p&gt;That’s where Sort and Filter save your life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sorting helps you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Arrange salaries from highest to lowest&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Order dates from oldest to newest&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rank scores&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Filtering helps you:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;See only Sales department&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;View employees above age 30&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Focus on specific categories&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fkpkar8d87g0x4tegk0gl.jpg" 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%2Fkpkar8d87g0x4tegk0gl.jpg" alt="An Image Showing Sorting and Filters " width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 Beginner win: If you can filter data, you can already answer real business questions.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Using Simple Formulas (Excel Starts Thinking for You)
&lt;/h1&gt;

&lt;p&gt;This is where Excel stops being a table and starts being smart.&lt;/p&gt;

&lt;p&gt;Basic formulas used in data analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;SUM()&lt;/code&gt; → total values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;AVERAGE()&lt;/code&gt; → mean&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;COUNT()&lt;/code&gt; → number of entries&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;MAX() / MIN()&lt;/code&gt; → highest &amp;amp; lowest values&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example questions Excel can answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;What is the total salary paid?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the average age?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Who earns the most?&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fwnz841gr6egnpsfahimh.jpg" 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%2Fwnz841gr6egnpsfahimh.jpg" alt="A Formula Bar with Sum,Average,Count..." width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Conditional Formatting (Let Excel Highlight the Story)
&lt;/h1&gt;

&lt;p&gt;Data doesn’t always speak.&lt;/p&gt;

&lt;p&gt;So we highlight it.&lt;/p&gt;

&lt;p&gt;Conditional Formatting lets you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Highlight high or low values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Color-code performance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spot patterns instantly&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Salaries above 100,000 → green&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Low scores → red&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fyr4hthof5fllkr3gt8xs.jpg" 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%2Fyr4hthof5fllkr3gt8xs.jpg" alt=" " width="784" height="1168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why this matters*: Your eyes understand colors faster than numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  6. Pivot Tables (Summary Without Stress)
&lt;/h1&gt;

&lt;p&gt;Pivot Tables sound scary.&lt;/p&gt;

&lt;p&gt;They’re not.&lt;/p&gt;

&lt;p&gt;Think of a Pivot Table as:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;A summary button for large data&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;With Pivot Tables, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Count employees per department&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sum sales per month&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Compare categories easily&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And the best part? No formulas needed.&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%2F261raokjy9hq7j5yeqs9.jpg" 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%2F261raokjy9hq7j5yeqs9.jpg" alt=" " width="396" height="370"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Charts and Visuals (Making Data Human)
&lt;/h1&gt;

&lt;p&gt;Numbers are cool.&lt;/p&gt;

&lt;p&gt;But visuals? They hit different.&lt;/p&gt;

&lt;p&gt;Excel charts help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Compare values&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;See trends over time&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Explain data to other humans&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Common beginner charts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Column charts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Bar charts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Line charts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pie charts&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2Fca6bghuiek7yqti6tbnc.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%2Fca6bghuiek7yqti6tbnc.png" alt=" " width="356" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pro tip: If someone understands your chart in 5 seconds, you did it right.&lt;/p&gt;

&lt;h1&gt;
  
  
  Final Thoughts: Excel Is the Gateway Drug
&lt;/h1&gt;

&lt;p&gt;Most people think data analysis starts with Python, SQL, or Power BI.&lt;/p&gt;

&lt;p&gt;But for many of us? It starts with Excel.&lt;/p&gt;

&lt;p&gt;Excel teaches you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;How data is structured&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to ask questions&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How to find answers&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And once that clicks… everything else becomes easier.&lt;/p&gt;

&lt;p&gt;So if you’re learning Excel right now — keep going. You’re not just learning a tool.&lt;/p&gt;

&lt;p&gt;You’re learning how to think with data.&lt;/p&gt;

&lt;p&gt;If this helped you, feel free to share it or drop your Excel learning story. We’re all just one spreadsheet away from greatness.&lt;/p&gt;

</description>
      <category>data</category>
      <category>analytics</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Introduction to Git Bash and GitHub for Beginners</title>
      <dc:creator>PHILIP KAPLONG (Sirphilip)</dc:creator>
      <pubDate>Sun, 18 Jan 2026 10:13:33 +0000</pubDate>
      <link>https://dev.to/sirphilip/introduction-to-git-bash-and-github-for-beginners-43on</link>
      <guid>https://dev.to/sirphilip/introduction-to-git-bash-and-github-for-beginners-43on</guid>
      <description>&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%2F9ixjj29a8lnyc8br8cl8.jpg" 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%2F9ixjj29a8lnyc8br8cl8.jpg" alt=" " width="304" height="166"&gt;&lt;/a&gt;#What is Git?&lt;br&gt;
&lt;strong&gt;Git&lt;/strong&gt; is a free, open-source &lt;strong&gt;version control system&lt;/strong&gt; that tracks changes in your code (or any files) over time. It lets developers work on projects of any size, revert to previous versions if needed, experiment safely with branches, and collaborate with others without overwriting each other's work.&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Git Bash?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Bash&lt;/strong&gt; is the default command-line shell on Linux and macOS&lt;br&gt;
Git Bash is a lightweight application for Windows that brings a Bash-like Unix-style terminal environment, including Git commands. It allows Windows users to run Git and many Unix commands seamlessly in a familiar shell.&lt;br&gt;
Git Bash is installed locally on your computer.&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%2Fufzb0kqznwwoyprfniu8.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%2Fufzb0kqznwwoyprfniu8.png" alt=" " width="307" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is GitHub?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;GitHub&lt;/strong&gt; is a cloud-based hosting platform built on top of Git. It lets you store your Git repositories online, share code with others, collaborate in teams, review changes via pull requests, and discover open-source projects.&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%2F08vwy33fl56fpg7vd0o5.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%2F08vwy33fl56fpg7vd0o5.png" alt=" " width="300" height="168"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Installing Git Bash (Windows)
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Go to the official Git website: &lt;a href="https://git-scm.com/downloads" rel="noopener noreferrer"&gt;https://git-scm.com/downloads&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Download the Windows installer (it includes Git Bash).&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run the downloaded &lt;code&gt;.exe&lt;/code&gt; file and follow the setup wizard.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Accept defaults for most options (they work well for beginners).
-Choose your preferred text editor (e.g., Notepad++ or VS Code if installed).
-Keep line ending conversion enabled for cross-platform compatibility.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Complete the installation.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Verify installation&lt;/strong&gt;&lt;br&gt;
Open Git Bash (search for "Git Bash" in the Start menu) and run:bash&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git --version&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should see something like &lt;code&gt;git version 2.XX.X.windows.X.&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Git Configuration&lt;/strong&gt;&lt;br&gt;
Set your name and email (these appear in your commits):bash&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git config --global user.name "Your Full Name"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git config --global user.email "your.email@example.com"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use the same email you have on your GitHub account.&lt;/p&gt;

&lt;h1&gt;
  
  
  Linking Git Bash to Your GitHub Account (Using SSH)
&lt;/h1&gt;

&lt;p&gt;SSH keys provide secure, password-less authentication for pushing/pulling code.&lt;br&gt;
1.&lt;strong&gt;Generate a new SSH key&lt;/strong&gt; (in Git Bash)&lt;br&gt;
&lt;code&gt;ssh-keygen -t ed25519 -C&lt;/code&gt;"&lt;a href="mailto:your.email@example.com"&gt;your.email@example.com&lt;/a&gt;"`&lt;/p&gt;

&lt;p&gt;-Press Enter to accept the default file location (&lt;code&gt;~/.ssh/id_ed25519&lt;/code&gt;).&lt;br&gt;
   -Optionally set a passphrase (recommended for extra security).&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;Start the SSH agent&lt;/strong&gt; and add your key:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;eval "$(ssh-agent -s)"&lt;br&gt;
ssh-add ~/.ssh/id_ed25519&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3.&lt;strong&gt;Copy your public key to the clipboard:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cat ~/.ssh/id_ed25519.pub&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(Select and copy the output starting with &lt;code&gt;ssh-ed25519 ...&lt;/code&gt;)&lt;/p&gt;

&lt;p&gt;4.&lt;strong&gt;Add the key to GitHub:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in to GitHub → Click your profile picture → Settings → SSH and GPG keys → New SSH key.&lt;/li&gt;
&lt;li&gt;Give it a title (e.g., "My Windows PC").&lt;/li&gt;
&lt;li&gt;Paste the key and click &lt;strong&gt;Add SSH key&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test the connection:&lt;br&gt;
&lt;code&gt;ssh -T git@github.com&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You should see: &lt;code&gt;Hi username! You've successfully authenticated...&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Pulling and Pushing Code
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;git pull&lt;/strong&gt;&lt;br&gt;
Fetches changes from the remote repository (e.g., GitHub) and merges them into your local branch.&lt;br&gt;
&lt;code&gt;git pull origin main&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(&lt;code&gt;git pull&lt;/code&gt; = &lt;code&gt;git fetch&lt;/code&gt; + &lt;code&gt;git merge&lt;/code&gt;)&lt;br&gt;
Always pull before starting work to avoid conflicts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;git push&lt;/strong&gt;&lt;br&gt;
Uploads your local commits to the remote repository.&lt;br&gt;
&lt;code&gt;git push origin main&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;origin&lt;/code&gt; = default name for your GitHub remote.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;main&lt;/code&gt; = default branch name (some older repos use &lt;code&gt;master&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it's your first push to a new repo, you may need to set upstream:&lt;br&gt;
&lt;code&gt;git push -u origin main&lt;/code&gt;&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%2F4fcft476xsyk6oj7n573.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%2F4fcft476xsyk6oj7n573.png" alt=" " width="282" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Tracking Changes – The Core Workflow
&lt;/h1&gt;

&lt;p&gt;Use these three commands in almost every session:&lt;br&gt;
1.&lt;strong&gt;git status&lt;/strong&gt;&lt;br&gt;
Shows what's changed, staged, or untracked.&lt;br&gt;
&lt;code&gt;git status&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2.&lt;strong&gt;git add&lt;/strong&gt;&lt;br&gt;
Stages changes (prepares them for commit).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stage one file: &lt;code&gt;git add filename.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Stage all changes: &lt;code&gt;git add&lt;/code&gt; . or &lt;code&gt;git add -A&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3.&lt;strong&gt;git commit&lt;/strong&gt;&lt;br&gt;
Saves staged changes permanently with a message.&lt;br&gt;
&lt;code&gt;git commit -m "Add new feature: user login page"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Good commit messages are short, descriptive, and in present tense (e.g., "Fix bug in login form").&lt;/p&gt;

&lt;p&gt;Typical workflow:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;git status          # Check what's changed&lt;br&gt;
  #Edit files...&lt;br&gt;
git add .           # Stage everything&lt;br&gt;
git commit -m "Your message here"&lt;br&gt;
git pull origin main  # Get latest changes first!&lt;br&gt;
git push origin main  # Send to GitHub&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  What is Version Control and Why It Matters
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Version control&lt;/strong&gt; records every change to files over time so you can recall specific versions later.&lt;br&gt;
Key benefits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Full history of who changed what and why.&lt;/li&gt;
&lt;li&gt;Branching &amp;amp; merging: Work on features/bug fixes in isolation, then combine safely.&lt;/li&gt;
&lt;li&gt;Easy rollback if something breaks.&lt;/li&gt;
&lt;li&gt;Collaboration: Multiple people work on the same project without chaos.&lt;/li&gt;
&lt;li&gt;Backup: Your code lives safely on GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Master these basics, and you'll be ready to create repositories, clone projects, create branches, and contribute to open source!&lt;br&gt;
Happy coding! &lt;br&gt;
Feel free to practice by creating a simple repo on GitHub and pushing a "Hello World" file.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>git</category>
      <category>datascience</category>
    </item>
  </channel>
</rss>
