<?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: Nelly Triza</title>
    <description>The latest articles on DEV Community by Nelly Triza (@nelly_gitonga).</description>
    <link>https://dev.to/nelly_gitonga</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3957084%2Ff4ca3670-be5a-4233-bdc5-ff2d72325731.png</url>
      <title>DEV Community: Nelly Triza</title>
      <link>https://dev.to/nelly_gitonga</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nelly_gitonga"/>
    <language>en</language>
    <item>
      <title>Finally Teaching Python to Think 🐍</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Sun, 20 Sep 2026 20:54:15 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/-im-finally-teaching-python-to-think-7dk</link>
      <guid>https://dev.to/nelly_gitonga/-im-finally-teaching-python-to-think-7dk</guid>
      <description>&lt;p&gt;When I started learning Python, I was mostly telling it what to print.&lt;/p&gt;

&lt;p&gt;Then I discovered &lt;code&gt;if&lt;/code&gt; statements and loops.&lt;/p&gt;

&lt;p&gt;And suddenly, Python could &lt;strong&gt;make decisions, repeat tasks, and even help me analyse data.&lt;/strong&gt; 👀&lt;/p&gt;

&lt;p&gt;That was when things started getting interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  🧠 Teaching Python to Make Decisions
&lt;/h2&gt;

&lt;p&gt;I learned that comparison operators allow Python to ask questions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;75&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# True
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;   &lt;span class="c1"&gt;# False
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then came &lt;code&gt;if&lt;/code&gt;, &lt;code&gt;elif&lt;/code&gt;, and &lt;code&gt;else&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter your score: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Grade A&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Grade B&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Grade C&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;score&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Grade D&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Grade F&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basically, I was teaching Python:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“If this happens, do this. Otherwise, try something else.”&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 Decisions Inside Decisions
&lt;/h2&gt;

&lt;p&gt;I also learned about nested &lt;code&gt;if&lt;/code&gt; statements.&lt;/p&gt;

&lt;p&gt;For example, checking a login:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Username: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Password: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Kenya2025&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Welcome Admin&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Wrong Password&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;User not found&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One decision leads to another decision.&lt;/p&gt;

&lt;p&gt;Suddenly, my code was starting to look like a little flowchart.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔁 Then I Discovered Loops
&lt;/h2&gt;

&lt;p&gt;If statements help Python &lt;strong&gt;decide&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Loops help Python &lt;strong&gt;repeat&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of writing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Good Morning Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Good Morning Brian&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Good Morning Jane&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I can simply write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;names&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Brian&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Jane&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;names&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Good Morning, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One instruction. Multiple results.&lt;/p&gt;

&lt;p&gt;That felt like unlocking a new level. 🎮&lt;/p&gt;




&lt;h2&gt;
  
  
  💰 My Accounting Brain Got Excited
&lt;/h2&gt;

&lt;p&gt;One of my favourite exercises was adding M-Pesa transactions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;transactions&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1500&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;800&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;12000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;450&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2700&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;transactions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Final total: Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Python can go through each transaction and calculate the total for me.&lt;/p&gt;

&lt;p&gt;This is where I started seeing the connection between &lt;strong&gt;Python, finance and data analytics&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🎯 And Then I Built a Savings Calculator
&lt;/h2&gt;

&lt;p&gt;I used a &lt;code&gt;while&lt;/code&gt; loop to calculate how long it would take to reach a savings goal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;saving_goal&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Savings goal: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;monthly_savings&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Monthly savings: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="n"&gt;months&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;saving_goal&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;monthly_savings&lt;/span&gt;
    &lt;span class="n"&gt;months&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;It took &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;months&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; months to reach Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a goal of &lt;strong&gt;Ksh 50,000&lt;/strong&gt; and monthly savings of &lt;strong&gt;Ksh 8,000&lt;/strong&gt;, Python tells me it takes &lt;strong&gt;7 months&lt;/strong&gt;, reaching Ksh 56,000.&lt;/p&gt;

&lt;p&gt;And honestly, watching a few lines of code solve a real-world problem is becoming addictive. 😂&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 What I'm Learning
&lt;/h2&gt;

&lt;p&gt;My Python journey is slowly changing from:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What does this code mean?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“What problem can I solve with this?”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So far, I've learned:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;if&lt;/code&gt; → make decisions&lt;br&gt;
&lt;code&gt;for&lt;/code&gt; → repeat through items&lt;br&gt;
&lt;code&gt;while&lt;/code&gt; → keep going until a condition changes&lt;br&gt;
&lt;code&gt;and / or&lt;/code&gt; → combine conditions&lt;br&gt;
&lt;code&gt;break&lt;/code&gt; → stop a loop&lt;br&gt;
&lt;code&gt;accumulators&lt;/code&gt; → keep running totals&lt;/p&gt;

&lt;p&gt;I'm still very much a beginner, but I'm starting to understand something important:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming isn't just about writing code. It's about learning how to break a real-world problem into instructions a computer can understand.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And I'm enjoying the process, one bug at a time. 🐍💻&lt;/p&gt;

</description>
      <category>womenintech</category>
      <category>python</category>
      <category>datascience</category>
      <category>programming</category>
    </item>
    <item>
      <title>Python Finally Started Making Sense When I Stopped Treating It Like Magic 🐍</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Sun, 20 Sep 2026 20:50:21 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/python-finally-started-making-sense-when-i-stopped-treating-it-like-magic-3mii</link>
      <guid>https://dev.to/nelly_gitonga/python-finally-started-making-sense-when-i-stopped-treating-it-like-magic-3mii</guid>
      <description>&lt;p&gt;I’ll be honest.&lt;/p&gt;

&lt;p&gt;When I first started learning Python, I looked at code and thought:&lt;/p&gt;

&lt;p&gt;“Okay... but why does the computer understand this?” 😂&lt;/p&gt;

&lt;p&gt;There were variables, strings, integers, floats, booleans, &lt;code&gt;input()&lt;/code&gt;, &lt;code&gt;type()&lt;/code&gt;, f-strings...&lt;/p&gt;

&lt;p&gt;It felt like learning a new language where everyone had forgotten to give me the dictionary.But after practicing the basics, something started to click.&lt;/p&gt;

&lt;p&gt;Python isn't magic.&lt;/p&gt;

&lt;p&gt;It's mostly about "telling the computer exactly what kind of information you're giving it and what you want it to do with that information."&lt;/p&gt;

&lt;p&gt;So here are some of the things that finally started making sense to me.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧱 1. Variables Are Basically Little Boxes
&lt;/h2&gt;

&lt;p&gt;Imagine I have a box labelled &lt;code&gt;name&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I can put &lt;code&gt;"Amina Wanjiku"&lt;/code&gt; inside it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Amina Wanjiku&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Another box called &lt;code&gt;age&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;24&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And another called &lt;code&gt;city&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Nairobi&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Python knows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name → Amina Wanjiku
age  → 24
city → Nairobi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I can simply ask Python to show me what's inside:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;city&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This was one of the first things that made programming feel less mysterious.&lt;/p&gt;

&lt;p&gt;A variable is basically Python saying:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Give this information a name so we can use it later.”&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  🔢 2. Not Every Number Is Actually a Number
&lt;/h2&gt;

&lt;p&gt;This one caught my attention.&lt;/p&gt;

&lt;p&gt;Look at these:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;num_a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;
&lt;span class="n"&gt;num_b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;7&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;They look almost identical.&lt;/p&gt;

&lt;p&gt;But Python sees two completely different things.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;num_a&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;14
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;num_b&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;num_b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;gives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;77
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait... what? 😂&lt;/p&gt;

&lt;p&gt;The reason is simple.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;7&lt;/code&gt; is an &lt;strong&gt;integer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;"7"&lt;/code&gt; is &lt;strong&gt;text&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;So Python isn't adding &lt;code&gt;7 + 7&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It's joining:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"7" + "7"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;which becomes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"77"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That little difference taught me an important lesson:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Computers don't care what something looks like to us. They care what type of data it actually is.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  🗃️ 3. Meet the Python Data Types
&lt;/h2&gt;

&lt;p&gt;So far, I've met four of the basic ones:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;str&lt;/code&gt; → Text
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Nelly&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;int&lt;/code&gt; → Whole numbers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;float&lt;/code&gt; → Decimal numbers
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;balance&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;74670.50&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;bool&lt;/code&gt; → True or False
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;is_student&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
&lt;span class="n"&gt;has_id_card&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And when I get confused about what something is, Python has my back:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python responds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;class 'int'&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basically, Python can tell me:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;“Nelly, that's an integer. Please stop trying to treat it like text.”&lt;/strong&gt; 😂&lt;/p&gt;




&lt;h1&gt;
  
  
  🗣️ 4. Then I Learned How to Make Python Ask Questions
&lt;/h1&gt;

&lt;p&gt;This is where things became more interactive.&lt;/p&gt;

&lt;p&gt;Before &lt;code&gt;input()&lt;/code&gt;, my programs were basically me giving Python instructions.&lt;/p&gt;

&lt;p&gt;Then I discovered:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What is your name? &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now Python waits for the user to answer.&lt;/p&gt;

&lt;p&gt;If I enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nelly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I can then do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And Python responds:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hello Nelly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suddenly, my program wasn't just sitting there displaying information.&lt;/p&gt;

&lt;p&gt;It was &lt;strong&gt;having a conversation with me.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  💰 5. My Accounting Brain Finally Got Involved
&lt;/h1&gt;

&lt;p&gt;This is probably where I had the most fun.&lt;/p&gt;

&lt;p&gt;I decided to create a simple money transfer calculation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;sender&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter sender name: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;recipient&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter recipient name: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter amount to send (Ksh): &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;charge&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;11&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;charge&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Sending from &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sender&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; to &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;recipient&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Amount: Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Charge: Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;charge&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Total: Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If I enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sender: Nelly
Recipient: Amina
Amount: 1000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python can calculate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sending from Nelly to Amina
Amount: Ksh 1000
Charge: Ksh 11
Total: Ksh 1011
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And suddenly I'm thinking:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wait... I can actually use this for finance. 👀&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That connection between my accounting background and Python is one of the things making learning programming exciting for me.&lt;/p&gt;




&lt;h1&gt;
  
  
  ✨ 6. Then Came F-Strings
&lt;/h1&gt;

&lt;p&gt;Before learning f-strings, I could write:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Age:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works.&lt;/p&gt;

&lt;p&gt;But then I learned:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Name: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;, Age: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Much cleaner.&lt;/p&gt;

&lt;p&gt;And Python can even calculate things inside the &lt;code&gt;{}&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;22&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Next year you will be &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;age&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; years old&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Next year you will be 23 years old
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So the &lt;code&gt;{}&lt;/code&gt; isn't just for displaying a variable.&lt;/p&gt;

&lt;p&gt;Python can actually &lt;strong&gt;do some work inside it.&lt;/strong&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  🎟️ 7. From Tiny Concepts to an Actual Program
&lt;/h1&gt;

&lt;p&gt;Then I combined everything I had learned and created a small ticket calculator.&lt;/p&gt;

&lt;p&gt;The user enters:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Passenger name
Route
Fare
Booking fee
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python calculates the total and prints a formatted ticket.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;passenger_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter passenger name: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;route&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter route: &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;fare&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter fare (Ksh): &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;booking_fee&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;input&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Enter booking fee (Ksh): &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;fare&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;booking_fee&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;             TICKET&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Passenger name: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;passenger_name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Route:          &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;route&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Fare:           Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;fare&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Booking fee:    Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;booking_fee&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;-&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Total:          Ksh &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;      THANK YOU FOR BOOKING!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It's a tiny program.&lt;/p&gt;

&lt;p&gt;But seeing those few lines turn into something interactive made the whole learning process feel different.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧠 What I've Realised So Far
&lt;/h1&gt;

&lt;p&gt;I'm learning that programming isn't about knowing everything.&lt;/p&gt;

&lt;p&gt;It's about understanding a few concepts well enough to combine them.&lt;/p&gt;

&lt;p&gt;Right now, my Python toolbox looks something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;📝 Strings       → Store text
📦 Variables     → Store information
🔢 Integers      → Whole numbers
💰 Floats        → Decimal numbers
✅ Booleans      → True / False
⌨️ Input         → Get information from users
🔄 Type casting  → Convert data types
🧮 Operators     → Perform calculations
✨ F-strings      → Make output cleaner
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And these tiny building blocks can already create something useful.&lt;/p&gt;

&lt;p&gt;That's probably my biggest takeaway so far:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You don't have to understand the whole programming world before you start building things.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes you just need to understand one little piece...&lt;/p&gt;

&lt;p&gt;then another...&lt;/p&gt;

&lt;p&gt;then another...&lt;/p&gt;

&lt;p&gt;until suddenly the code that looked like random symbols starts telling a story.&lt;/p&gt;

&lt;p&gt;And I'm just getting started. 🐍💻&lt;/p&gt;




&lt;h3&gt;
  
  
  What's next?
&lt;/h3&gt;

&lt;p&gt;I'm moving on to &lt;strong&gt;conditionals, loops, lists, dictionaries and functions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Eventually, I want to take these Python skills into &lt;strong&gt;data analytics and finance—business analyst&lt;/strong&gt;, where numbers aren't just sitting in spreadsheets waiting to be formatted. 😉&lt;/p&gt;

&lt;p&gt;For now, I'm learning in public, breaking things, fixing them and slowly figuring out what all these curly brackets and parentheses are trying to tell me.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One line of Python at a time.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>learning</category>
      <category>datascience</category>
      <category>programming</category>
    </item>
    <item>
      <title>Connecting PostgreSQL to Aiven Using DBeaver ☁️</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Mon, 07 Sep 2026 17:08:20 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/connecting-postgresql-to-aiven-using-dbeaver-3810</link>
      <guid>https://dev.to/nelly_gitonga/connecting-postgresql-to-aiven-using-dbeaver-3810</guid>
      <description>&lt;p&gt;As I continue learning SQL and PostgreSQL, I am moving beyond working with databases locally and exploring how databases work in the cloud.&lt;/p&gt;

&lt;p&gt;For this project, I use &lt;strong&gt;Aiven&lt;/strong&gt; to host a PostgreSQL database and &lt;strong&gt;DBeaver&lt;/strong&gt; to connect to and work with the database.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Setting Up PostgreSQL on Aiven
&lt;/h2&gt;

&lt;p&gt;I start by creating a PostgreSQL service on Aiven. Aiven hosts the database in the cloud and provides the connection details I need to access it.&lt;/p&gt;

&lt;p&gt;These details include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host&lt;/li&gt;
&lt;li&gt;Port&lt;/li&gt;
&lt;li&gt;Database name&lt;/li&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;li&gt;SSL certificate&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw5h8s42cqloce5pagxfx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw5h8s42cqloce5pagxfx.png" alt=" " width="515" height="740"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Connecting Aiven to DBeaver
&lt;/h2&gt;

&lt;p&gt;I open DBeaver and create a new &lt;strong&gt;PostgreSQL connection&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I enter the connection details provided by Aiven, including the host, port, database, username, and password.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi75m6iajgn6zc47ee46k.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi75m6iajgn6zc47ee46k.png" alt=" " width="800" height="887"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since Aiven requires a secure connection, I go to the &lt;strong&gt;SSL&lt;/strong&gt; settings in DBeaver, enable SSL, and add the &lt;strong&gt;CA certificate&lt;/strong&gt; I download from Aiven.&lt;/p&gt;

&lt;p&gt;I then click &lt;strong&gt;Test Connection&lt;/strong&gt; to confirm that the connection works successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Working With the Cloud Database
&lt;/h2&gt;

&lt;p&gt;Once the connection is successful, I can access my PostgreSQL database directly through DBeaver.&lt;/p&gt;

&lt;p&gt;I can now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create and manage tables&lt;/li&gt;
&lt;li&gt;Import data&lt;/li&gt;
&lt;li&gt;Write SQL queries&lt;/li&gt;
&lt;li&gt;View database records&lt;/li&gt;
&lt;li&gt;Work with a database hosted remotely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The database is hosted in the cloud, but I can still interact with it through DBeaver just like I would with a local PostgreSQL database.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Learnt
&lt;/h2&gt;

&lt;p&gt;This exercise helped me understand that SQL databases don't have to exist only on my laptop. They can be hosted on cloud platforms and accessed remotely using database tools such as DBeaver.&lt;/p&gt;

&lt;p&gt;I also learned how SSL certificates help secure the connection between the database and the client.&lt;/p&gt;

&lt;h3&gt;
  
  
  Final Takeaway
&lt;/h3&gt;

&lt;p&gt;Connecting Aiven PostgreSQL to DBeaver gives me a practical understanding of how SQL works in a cloud environment. It allows me to take the SQL concepts I learn locally and apply them to a remotely hosted database. ☁️🐘&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>database</category>
      <category>postgres</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>My SQL Learning Journey: The Sunrise Supermarket Project</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Mon, 07 Sep 2026 16:44:56 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/my-sql-learning-journey-the-sunrise-supermarket-project-47mc</link>
      <guid>https://dev.to/nelly_gitonga/my-sql-learning-journey-the-sunrise-supermarket-project-47mc</guid>
      <description>&lt;h1&gt;
  
  
  What I Learned Building the Sunrise Supermarket Database with SQL 🛒
&lt;/h1&gt;

&lt;p&gt;Working on the &lt;strong&gt;Sunrise Supermarket SQL project&lt;/strong&gt; was one of those exercises that helped turn SQL from a collection of commands into something I could actually use to answer questions from data.&lt;/p&gt;

&lt;p&gt;Instead of working with random tables, I worked with a supermarket scenario involving &lt;strong&gt;customers, orders, order items, and products&lt;/strong&gt;. This made it easier to understand how SQL can be used to explore business data and extract useful information.&lt;/p&gt;

&lt;p&gt;Here are some of the key things I learned.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. SQL becomes more meaningful when you work with real-world scenarios
&lt;/h2&gt;

&lt;p&gt;One of my biggest takeaways was that SQL is not just about writing queries. It is about asking questions and using data to answer them.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Which products cost more than 100?&lt;/li&gt;
&lt;li&gt;Which customers are not from Nairobi?&lt;/li&gt;
&lt;li&gt;Which customers are from specific cities?&lt;/li&gt;
&lt;li&gt;Which products contain the word "Oil"?&lt;/li&gt;
&lt;li&gt;Which orders are still pending?&lt;/li&gt;
&lt;li&gt;Which products are the most expensive?&lt;/li&gt;
&lt;li&gt;How many orders has each customer placed?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions helped me understand that a database becomes useful when we can interact with it to retrieve information that supports decision-making.&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Filtering data with &lt;code&gt;WHERE&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;I learned how the &lt;code&gt;WHERE&lt;/code&gt; clause allows us to retrieve only the records that meet a particular condition.&lt;/p&gt;

&lt;p&gt;For example, to find products priced above 100:&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="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sunrise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;products&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;unit_price&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also used &lt;code&gt;WHERE&lt;/code&gt; with different operators, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;&amp;gt;&lt;/code&gt; for greater than&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;&amp;lt;&amp;gt;&lt;/code&gt; for not equal to&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;BETWEEN&lt;/code&gt; for values within a range&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;IN&lt;/code&gt; for matching multiple possible values&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;LIKE&lt;/code&gt; for searching patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, &lt;code&gt;BETWEEN&lt;/code&gt; helped me find products within a specific price range, while &lt;code&gt;IN&lt;/code&gt; allowed me to filter customers from Nairobi, Nakuru, or Mombasa.&lt;/p&gt;

&lt;p&gt;This helped me understand that filtering is one of the most important skills when working with databases because we rarely need every record in a table.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Using &lt;code&gt;LIKE&lt;/code&gt; to search for patterns
&lt;/h2&gt;

&lt;p&gt;Another useful concept I learned was the &lt;code&gt;LIKE&lt;/code&gt; operator.&lt;/p&gt;

&lt;p&gt;For example:&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="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sunrise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;products&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;product_name&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%Oil%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;%&lt;/code&gt; acts as a wildcard, meaning the word "Oil" can appear anywhere within the product name.&lt;/p&gt;

&lt;p&gt;This is particularly useful when searching through text data where we don't know the exact value we're looking for.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Sorting results with &lt;code&gt;ORDER BY&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Filtering tells us &lt;strong&gt;which records&lt;/strong&gt; we want, but sometimes we also need to control &lt;strong&gt;how those records are displayed&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's where &lt;code&gt;ORDER BY&lt;/code&gt; comes in.&lt;/p&gt;

&lt;p&gt;For example, I used:&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="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sunrise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;order_items&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Pending'&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;order_date&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allowed me to retrieve pending orders and arrange them from the earliest order to the latest.&lt;/p&gt;

&lt;p&gt;I also learned how to combine &lt;code&gt;ORDER BY&lt;/code&gt; with &lt;code&gt;LIMIT&lt;/code&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="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;sunrise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;products&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;unit_price&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns the two most expensive products.&lt;/p&gt;

&lt;p&gt;The important lesson here was that SQL clauses can work together to answer much more specific questions.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Aggregate functions help turn rows into information
&lt;/h2&gt;

&lt;p&gt;Another major concept I learned was &lt;strong&gt;aggregate functions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Instead of looking at individual records, aggregate functions allow us to summarize data.&lt;/p&gt;

&lt;p&gt;For example:&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;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&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;total_orders&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This calculates the number of orders placed by each customer.&lt;/p&gt;

&lt;p&gt;Some commonly used aggregate functions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;COUNT()&lt;/code&gt; → counts records&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;SUM()&lt;/code&gt; → calculates a total&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;AVG()&lt;/code&gt; → calculates an average&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MIN()&lt;/code&gt; → finds the smallest value&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;MAX()&lt;/code&gt; → finds the largest value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was particularly interesting because it showed me how SQL can move beyond simply retrieving data and actually help summarize it.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Understanding the difference between &lt;code&gt;WHERE&lt;/code&gt; and &lt;code&gt;HAVING&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;One concept that initially required more attention was the difference between &lt;code&gt;WHERE&lt;/code&gt; and &lt;code&gt;HAVING&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I used &lt;code&gt;HAVING&lt;/code&gt; to find customers who had placed more than one order:&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;customer_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&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;total_orders&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;customer_id&lt;/span&gt;
&lt;span class="k"&gt;HAVING&lt;/span&gt; &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important thing I learned is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;WHERE&lt;/code&gt; filters individual rows, while &lt;code&gt;HAVING&lt;/code&gt; filters grouped results.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So when working with aggregate functions and &lt;code&gt;GROUP BY&lt;/code&gt;, &lt;code&gt;HAVING&lt;/code&gt; becomes particularly useful.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Joins are what connect the database together 🔗
&lt;/h2&gt;

&lt;p&gt;This was probably one of the most important lessons from the project.&lt;/p&gt;

&lt;p&gt;A database can contain several related tables, and the information we need may be spread across them.&lt;/p&gt;

&lt;p&gt;In the Sunrise Supermarket database, for example, customers are connected to orders, while orders are connected to order items, which are connected to products.&lt;/p&gt;

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

&lt;p&gt;I used an &lt;code&gt;INNER JOIN&lt;/code&gt; to connect customers and orders:&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;Customers&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;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Status&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Customers&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;Orders&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer_ID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allowed me to see a customer's name alongside their order information.&lt;/p&gt;

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

&lt;p&gt;I also learned about &lt;code&gt;LEFT JOIN&lt;/code&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;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Quantity&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Orders&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;Order_Items&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One thing that stood out to me was that a &lt;code&gt;LEFT JOIN&lt;/code&gt; can still return a record from the left table even when there is no matching record in the right table. In that case, the columns from the right table return &lt;code&gt;NULL&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This helped me understand why choosing the correct type of join matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Combining multiple tables
&lt;/h2&gt;

&lt;p&gt;The project then took joins a step further by connecting &lt;strong&gt;four tables&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customers → Orders → Order Items → Products&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;Customers&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;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_Name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Quantity&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer_ID&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Products&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_ID&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82r20k67enrr1o9m9kbd.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82r20k67enrr1o9m9kbd.png" alt=" " width="798" height="125"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This produces a much more useful view of the data because I can see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who placed the order&lt;/li&gt;
&lt;li&gt;The order ID&lt;/li&gt;
&lt;li&gt;What product was ordered&lt;/li&gt;
&lt;li&gt;How many units were ordered&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This was the point where I started seeing how relational databases are designed to work together rather than treating every table as an isolated spreadsheet.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq6q0ex8jqhoqi4abqbm3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fq6q0ex8jqhoqi4abqbm3.png" alt=" " width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Combining &lt;code&gt;JOIN&lt;/code&gt;, &lt;code&gt;GROUP BY&lt;/code&gt;, and &lt;code&gt;SUM()&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;The final challenge pushed the concept even further.&lt;/p&gt;

&lt;p&gt;I used the joined tables together with &lt;code&gt;GROUP BY&lt;/code&gt; and &lt;code&gt;SUM()&lt;/code&gt; to calculate the total quantity ordered for each product:&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;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_Name&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;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Quantity&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;Total_Quantity_Ordered&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Customers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Customer_ID&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Orders&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Order_ID&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;Products&lt;/span&gt;
&lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;Order_Items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_ID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_ID&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;Products&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Product_Name&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This showed me how multiple SQL concepts can be combined to answer a business question rather than simply retrieve raw records.&lt;/p&gt;

&lt;p&gt;For a supermarket, this kind of query could help identify which products are selling the most.&lt;/p&gt;




&lt;h1&gt;
  
  
  What I Took Away From the Project
&lt;/h1&gt;

&lt;p&gt;The Sunrise Supermarket project taught me that learning SQL is not really about memorising syntax.&lt;/p&gt;

&lt;p&gt;It's about understanding &lt;strong&gt;how data is structured, what question you're trying to answer, and which SQL tools can help you answer it.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My major takeaways were:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;WHERE&lt;/code&gt;&lt;/strong&gt; helps filter individual records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Operators&lt;/strong&gt; such as &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;BETWEEN&lt;/code&gt;, and &lt;code&gt;LIKE&lt;/code&gt; make filtering more flexible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;ORDER BY&lt;/code&gt;&lt;/strong&gt; helps organise query results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;LIMIT&lt;/code&gt;&lt;/strong&gt; allows us to restrict the number of results returned.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aggregate functions&lt;/strong&gt; help summarise data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;GROUP BY&lt;/code&gt;&lt;/strong&gt; allows us to analyse data by categories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;HAVING&lt;/code&gt;&lt;/strong&gt; filters grouped results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;JOIN&lt;/code&gt;&lt;/strong&gt; allows us to bring related information from different tables together.&lt;/li&gt;
&lt;li&gt;Combining these concepts allows SQL to answer meaningful &lt;strong&gt;business questions&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Final Thoughts:&lt;/p&gt;

&lt;p&gt;Before working on this project, SQL could easily feel like a list of commands to memorize.&lt;/p&gt;

&lt;p&gt;The Sunrise Supermarket database helped me see it differently.&lt;/p&gt;

&lt;p&gt;Every query starts with a question.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who are my customers? What are they buying? Which products are moving? How many orders are being placed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SQL provides the tools to turn those questions into answers.&lt;/p&gt;

&lt;p&gt;And that, for me, was the biggest lesson from this project: &lt;strong&gt;SQL isn't just about querying databases. It's about making data useful.&lt;/strong&gt; 📊&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>learning</category>
      <category>sql</category>
    </item>
    <item>
      <title>A Beginner's Guide to Connecting Power BI Local and Cloud-Based (PostgreSQL on Aiven)</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Mon, 07 Sep 2026 16:21:26 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/a-beginners-guide-to-connecting-power-bi-local-and-cloud-based-postgresql-on-aiven-3fi</link>
      <guid>https://dev.to/nelly_gitonga/a-beginners-guide-to-connecting-power-bi-local-and-cloud-based-postgresql-on-aiven-3fi</guid>
      <description>&lt;p&gt;Power BI becomes even more powerful when connected directly to SQL databases. Instead of working with static Excel files, SQL databases allow us to store, manage, and analyze large datasets efficiently. In this article, I'll demonstrate how to connect Power BI to both local and cloud-based SQL databases using PostgreSQL.&lt;/p&gt;

&lt;p&gt;Project Objective&lt;/p&gt;

&lt;p&gt;The objective of this tutorial is to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Connect Power BI to a local SQL database.&lt;/li&gt;
&lt;li&gt;Connect Power BI to a cloud-hosted PostgreSQL database on Aiven.&lt;/li&gt;
&lt;li&gt;Import data into Power BI.&lt;/li&gt;
&lt;li&gt;Transform and clean the data using Power Query.&lt;/li&gt;
&lt;li&gt;Prepare the data for dashboard development.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;--- Requirements&lt;/p&gt;

&lt;p&gt;Before getting started, ensure you have:&lt;/p&gt;

&lt;p&gt;Power BI Desktop installed.&lt;br&gt;
PostgreSQL installed locally (optional for local connections).&lt;br&gt;
An Aiven account with a PostgreSQL service.&lt;br&gt;
Your database credentials.&lt;br&gt;
A dataset to import.&lt;/p&gt;


&lt;h2&gt;
  
  
  Part 1: Connecting Power BI to a Local SQL Database
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Step 1: Open Power BI Desktop
&lt;/h3&gt;

&lt;p&gt;Open Power BI Desktop.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F949vf5vd7z423k6d1mi4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F949vf5vd7z423k6d1mi4.png" alt=" " width="800" height="402"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Click Get Data
&lt;/h3&gt;

&lt;p&gt;Navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home &amp;gt; Get Data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PostgreSQL Database
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewch8x68iu1zrr733leg.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewch8x68iu1zrr733leg.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Enter Your Database Details
&lt;/h3&gt;

&lt;p&gt;Provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Server name&lt;/li&gt;
&lt;li&gt;Database name&lt;/li&gt;
&lt;/ul&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;Server&lt;/span&gt;: &lt;span class="n"&gt;localhost&lt;/span&gt;
&lt;span class="n"&gt;Database&lt;/span&gt;: &lt;span class="n"&gt;jcars&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftsvegfv6ttfrcqnbiw6w.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftsvegfv6ttfrcqnbiw6w.png" alt=" " width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 4: Authenticate
&lt;/h3&gt;

&lt;p&gt;Enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database Authentication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Click Connect.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 5: Load the Data
&lt;/h3&gt;

&lt;p&gt;Power BI will display the available tables.&lt;/p&gt;

&lt;p&gt;Select the tables you wish to import and click:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Load
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Transform Data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;if you need to clean the data before loading.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Insert Screenshot: Navigator Window&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Part 2: Connecting Power BI to a Cloud-Based SQL Database (Aiven)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create an Aiven PostgreSQL Service
&lt;/h3&gt;

&lt;p&gt;Log in to your Aiven account and create a PostgreSQL service.&lt;/p&gt;

&lt;p&gt;Take note of the following details:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hostname&lt;/li&gt;
&lt;li&gt;Port&lt;/li&gt;
&lt;li&gt;Database name&lt;/li&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Insert Screenshot: Aiven PostgreSQL Dashboard&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  Step 2: Copy Your Connection Details
&lt;/h3&gt;

&lt;p&gt;A typical PostgreSQL connection looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;xxxx.aivencloud.com&lt;/span&gt;

&lt;span class="na"&gt;Port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="m"&gt;12345&lt;/span&gt;

&lt;span class="na"&gt;Database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;defaultdb&lt;/span&gt;

&lt;span class="na"&gt;Username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;avnadmin&lt;/span&gt;

&lt;span class="na"&gt;Password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="err"&gt;********&lt;/span&gt;
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjt522lp5urbhjc48j383.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjt522lp5urbhjc48j383.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Open Power BI
&lt;/h3&gt;

&lt;p&gt;Navigate to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Home &amp;gt; Get Data &amp;gt; PostgreSQL Database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;Server&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;hostname:port&lt;/span&gt;

&lt;span class="na"&gt;Example&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;xxxx.aivencloud.com:12345&lt;/span&gt;

&lt;span class="na"&gt;Database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="s"&gt;defaultdb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Step 4: Authenticate
&lt;/h3&gt;

&lt;p&gt;Select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database Authentication
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Click Connect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Select Tables
&lt;/h3&gt;

&lt;p&gt;Once Power BI successfully connects to the database:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select your tables.&lt;/li&gt;
&lt;li&gt;Click Transform Data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Part 3: Cleaning Data Using Power Query
&lt;/h2&gt;

&lt;p&gt;After importing the data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove unnecessary columns.&lt;/li&gt;
&lt;li&gt;Rename columns appropriately.&lt;/li&gt;
&lt;li&gt;Replace invalid values such as:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Unknown
NULL
Blank values
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Change data types.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Column&lt;/th&gt;
&lt;th&gt;Data Type&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Units Sold&lt;/td&gt;
&lt;td&gt;Whole Number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unit Cost&lt;/td&gt;
&lt;td&gt;Whole Number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Revenue&lt;/td&gt;
&lt;td&gt;Whole Number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discount&lt;/td&gt;
&lt;td&gt;Decimal Number&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Order Date&lt;/td&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delivery Date&lt;/td&gt;
&lt;td&gt;Date&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff2tfowbjd2fu9fdhsqcx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ff2tfowbjd2fu9fdhsqcx.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 4: Creating Measures in Power BI
&lt;/h2&gt;

&lt;p&gt;Examples of useful DAX measures include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Total Cars Sold
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total Cars Sold =
SUM('Jcars Clean'[Custom Units sold])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Total Revenue
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total Revenue =
SUMX(
'Jcars Clean',
'Jcars Clean'[Custom Units sold] *
'Jcars Clean'[Clean Unit Selling Price]
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Total Gross Profit
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total Gross Profit =
SUMX(
'Jcars Clean',
(
'Jcars Clean'[Clean Unit Selling Price] -
'Jcars Clean'[Clean Unit Cost]
) *
'Jcars Clean'[Custom Units sold]
)
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewxar3luwkjur50z78is.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fewxar3luwkjur50z78is.png" alt=" " width="261" height="627"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 5: Building Your Dashboard
&lt;/h2&gt;

&lt;p&gt;After creating the measures, you can develop interactive visuals such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;KPI Cards&lt;/li&gt;
&lt;li&gt;Clustered Bar Charts&lt;/li&gt;
&lt;li&gt;Line Charts&lt;/li&gt;
&lt;li&gt;Scatter Charts&lt;/li&gt;
&lt;li&gt;Maps&lt;/li&gt;
&lt;li&gt;Pie Charts&lt;/li&gt;
&lt;li&gt;Tables&lt;/li&gt;
&lt;li&gt;Slicers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples of dashboard analyses include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total sales revenue.&lt;/li&gt;
&lt;li&gt;Branch performance.&lt;/li&gt;
&lt;li&gt;Vehicle type performance.&lt;/li&gt;
&lt;li&gt;Monthly sales trends.&lt;/li&gt;
&lt;li&gt;Customer analysis.&lt;/li&gt;
&lt;li&gt;Delivery performance.&lt;/li&gt;
&lt;li&gt;Profitability analysis.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwtr33o3og9wevx4m56ew.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwtr33o3og9wevx4m56ew.png" alt=" " width="799" height="447"&gt;&lt;/a&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu09ijhazlfjnopbclp32.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu09ijhazlfjnopbclp32.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of Using SQL Databases with Power BI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Connecting Power BI directly to SQL databases offers several benefits:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Improved data management.&lt;/li&gt;
&lt;li&gt;Better scalability.&lt;/li&gt;
&lt;li&gt;Faster refreshes.&lt;/li&gt;
&lt;li&gt;Centralized storage. Especially because you can't lose your data&lt;/li&gt;
&lt;li&gt;Seamless integration with business intelligence tools.&lt;/li&gt;
&lt;li&gt;Real-time reporting capabilities. You can always do some adjustments at your convenience.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;Power BI's ability to connect to both local and cloud-based SQL databases makes it an excellent tool for business intelligence and data analytics. Whether you're working with a PostgreSQL database hosted locally or a cloud-hosted solution like Aiven, the connection process is straightforward and allows you to build dynamic and insightful dashboards with ease.&lt;/p&gt;

&lt;p&gt;By combining SQL databases, Power Query transformations, and Power BI visuals, you can turn raw data into meaningful business insights and support data-driven decision-making.&lt;/p&gt;

</description>
      <category>powerfuldevs</category>
      <category>learning</category>
      <category>datascience</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Bringing Data to Life with Power BI.</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Mon, 07 Sep 2026 16:13:27 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/bringing-data-to-life-with-power-bi-53kf</link>
      <guid>https://dev.to/nelly_gitonga/bringing-data-to-life-with-power-bi-53kf</guid>
      <description>&lt;p&gt;Week 3 of My Data Science Journey: Building Stories with Power BI&lt;/p&gt;

&lt;p&gt;Week 3 has been nothing short of exciting. I got the chance to work with one of the most creative tools in data analytics, Power BI. As someone who loves colour, simplicity and communicating through visuals, Power BI feels like the perfect blend of minimalism and storytelling.&lt;/p&gt;

&lt;p&gt;Here's a glimpse into how dashboards come to life in Power BI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Loading your data: The first step is importing your dataset into Power BI.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffn67te97hge9bnsiielx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffn67te97hge9bnsiielx.png" alt=" " width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaning and transforming data: If your data isn't clean, Power Query comes to the rescue. Much like Excel, it allows you to transform and prepare your data for analysis.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi8j4yq5sz3f4q29wrafv.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi8j4yq5sz3f4q29wrafv.png" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creating calculations: Power BI uses DAX measures to perform calculations. Familiar functions such as &lt;code&gt;SUM&lt;/code&gt;, &lt;code&gt;AVERAGE&lt;/code&gt;, &lt;code&gt;COUNT&lt;/code&gt;, and conditional logic are all part of the experience, making the transition from Excel feel natural.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe847n80ldomavv6j2v0g.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe847n80ldomavv6j2v0g.png" alt=" " width="261" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Building dashboards: Once your data is ready, the fun begins. By combining visuals, filters, and interactive elements, you can answer analytical questions and transform raw data into meaningful insights.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh0zix1bvxj6vqtut69vg.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh0zix1bvxj6vqtut69vg.png" alt=" " width="799" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learning Power BI has also helped me appreciate how different tools serve different purposes. Excel remains an incredible foundation for working with data, while Power BI elevates that data into interactive and insightful visual experiences.&lt;/p&gt;

&lt;p&gt;I'm especially proud to share my very first car sales dashboard. Seeing data come alive through visuals has been one of the highlights of this journey.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbm0po5n52btiauogjsea.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbm0po5n52btiauogjsea.png" alt=" " width="799" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Three weeks ago, dashboards felt like something I only admired from afar. Today, I'm building them myself, and that's a reminder that every expert was once a beginner.&lt;/p&gt;

&lt;p&gt;Here's to learning, creating, and turning data into stories, one dashboard at a time. &lt;/p&gt;

</description>
      <category>datascience</category>
      <category>beginners</category>
      <category>womenintech</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>Before Python, SQL &amp; Power BI... There was Excel. 📊</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Tue, 30 Jun 2026 16:53:13 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/before-python-sql-power-bi-there-was-excel-5123</link>
      <guid>https://dev.to/nelly_gitonga/before-python-sql-power-bi-there-was-excel-5123</guid>
      <description>&lt;p&gt;Most people think data analysis starts with Python, SQL or fancy dashboards.&lt;/p&gt;

&lt;p&gt;Mine started with an Excel spreadsheet.&lt;/p&gt;

&lt;p&gt;At first, Excel looked like a grid full of endless cells. Then I realized something: every cell tells a story. Sales figures tell you what customers love. Expenses reveal where money quietly disappears. Employee records uncover performance trends. The data has always been speaking. Excel simply taught me how to listen.&lt;/p&gt;

&lt;p&gt;As an accountant transitioning into data analytics, Excel became my first language. It taught me that data isn't just numbers on a screen. It's information waiting to answer business questions.&lt;/p&gt;

&lt;p&gt;A few examples:&lt;/p&gt;

&lt;p&gt;Human resource data helps answer the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who are our top performers?&lt;/li&gt;
&lt;li&gt;Which departments have the highest turnover?&lt;/li&gt;
&lt;li&gt;What does our payroll look like?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sales Data answers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which products sell the most?&lt;/li&gt;
&lt;li&gt;Which region generates the highest revenue?&lt;/li&gt;
&lt;li&gt;Are sales growing or declining?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Procurement data reveals the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where are we spending the most?&lt;/li&gt;
&lt;li&gt;Which suppliers offer the best value?&lt;/li&gt;
&lt;li&gt;How can we reduce costs?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finance data helps businesses understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are we making a profit?&lt;/li&gt;
&lt;li&gt;Is our cash flow healthy?&lt;/li&gt;
&lt;li&gt;What's our financial position?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it all begins with a few simple formulas.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SUM() totals your numbers.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F34q9eo62g0w0j26eieln.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F34q9eo62g0w0j26eieln.png" alt=" " width="346" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AVERAGE() finds the mean.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb4778xhstowj7fex5sng.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fb4778xhstowj7fex5sng.png" alt=" " width="381" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MIN() identifies the lowest value.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvtbsftywnshsizgjtjcb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvtbsftywnshsizgjtjcb.png" alt=" " width="400" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MAX() finds the highest value.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkk4blj1oewttesqjt8c4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkk4blj1oewttesqjt8c4.png" alt=" " width="385" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;COUNT() tells you how many records you have.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnvrbiaaowezrij9v28vb.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnvrbiaaowezrij9v28vb.png" alt=" " width="388" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IF() helps you make decisions based on conditions.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp81kmi6wkkxuaaifdjaq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp81kmi6wkkxuaaifdjaq.png" alt=" " width="588" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SUMIF(), COUNTIF(), and AVERAGEIF() let you analyze data using specific criteria.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Simple? Yes.&lt;/p&gt;

&lt;p&gt;Powerful? Absolutely.&lt;/p&gt;

&lt;p&gt;Once you understand these building blocks, you'll discover tools like pivot tables, XLOOKUP, charts, conditional formatting and dashboards that transform thousands of rows into insights decision-makers can actually use.&lt;/p&gt;

&lt;p&gt;I've learned that data analysis isn't about memorizing hundreds of formulas.&lt;/p&gt;

&lt;p&gt;It's about asking better questions.&lt;/p&gt;

&lt;p&gt;The formulas are simply the tools that help you find the answers.&lt;/p&gt;

&lt;p&gt;This is the start of my Excel for Data Analysis series, where I'll share practical Excel skills using real business scenarios. Whether you're an aspiring data analyst, a student, or someone looking to sharpen your Excel skills, I hope you'll find something useful along the way.&lt;/p&gt;

&lt;p&gt;Every expert once stared at a blank spreadsheet, wondering where to begin.&lt;/p&gt;

&lt;p&gt;What's the one Excel function you use so often that your fingers type it before your brain catches up? Mine has to be XLOOKUP() and SUMIFS(). 😄&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>beginners</category>
      <category>microsoft</category>
      <category>career</category>
    </item>
    <item>
      <title>From Ledgers to Learning Models: Why I'm Starting a Data Science Journey</title>
      <dc:creator>Nelly Triza</dc:creator>
      <pubDate>Sun, 28 Jun 2026 16:44:58 +0000</pubDate>
      <link>https://dev.to/nelly_gitonga/from-ledgers-to-learning-models-why-im-starting-a-data-science-journey-3jc8</link>
      <guid>https://dev.to/nelly_gitonga/from-ledgers-to-learning-models-why-im-starting-a-data-science-journey-3jc8</guid>
      <description>&lt;p&gt;In the 21st century, standing still is the fastest way to fall behind. You either keep learning or you slowly become obsolete.&lt;/p&gt;

&lt;p&gt;I'm an accountant by profession. Numbers have always been my language, whether they're in financial statements, tax returns or spreadsheets. But curiosity has a funny way of refusing to stay in its lane.&lt;/p&gt;

&lt;p&gt;So, despite a full-time 9 to 5, I enrolled in a data science bootcamp.&lt;br&gt;
Balancing work and learning hasn't been glamorous. It has meant late nights, early mornings, and more coffee than I'd like to admit. There are moments when concepts feel impossible and others when a single line of code finally works and suddenly everything feels worth it.&lt;/p&gt;

&lt;p&gt;I'm under no illusion that this journey will be easy. But growth rarely is.&lt;/p&gt;

&lt;p&gt;What excites me most is that data science sits at the intersection of logic, creativity, and problem-solving. As someone who has always loved numbers, it feels like a natural evolution rather than a complete career pivot. I'm not leaving accounting behind. I'm expanding what I can do with it.&lt;br&gt;
Through this blog, I'll be sharing the wins, the setbacks, the projects and the lessons I learn along the way. If you're switching careers, learning while working full time, or simply curious about data science, I hope you'll find something here that resonates with you.&lt;/p&gt;

&lt;p&gt;Here's to becoming a little better every day.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The girl with a dream of becoming a jack of all trades... while mastering a few along the way. 🌱📊💻&lt;/p&gt;
&lt;/blockquote&gt;

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