<?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: joy yego</title>
    <description>The latest articles on DEV Community by joy yego (@yeggie).</description>
    <link>https://dev.to/yeggie</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%2F3952225%2Fa5b87dcf-1c21-4d0b-8fc7-c68fd1aeb432.jpg</url>
      <title>DEV Community: joy yego</title>
      <link>https://dev.to/yeggie</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yeggie"/>
    <language>en</language>
    <item>
      <title>SQL Fundamentals: Building and Querying a School Database</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Mon, 20 Jul 2026 18:39:04 +0000</pubDate>
      <link>https://dev.to/yeggie/sql-fundamentals-building-and-querying-a-school-database-4goi</link>
      <guid>https://dev.to/yeggie/sql-fundamentals-building-and-querying-a-school-database-4goi</guid>
      <description>&lt;h1&gt;
  
  
  SQL Fundamentals: Building and Querying a School Database
&lt;/h1&gt;

&lt;p&gt;Schools generate a surprising amount of structured data: student records, subject lists, exam scores, attendance — all of it begging to be organized, filtered, and analyzed. In this article, we'll build a small database for a fictional secondary school, &lt;strong&gt;Greenwood Academy&lt;/strong&gt;, and use it to walk through six core SQL skills:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A.&lt;/strong&gt; Building the Database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;B.&lt;/strong&gt; Filling the Database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C.&lt;/strong&gt; Querying the Data&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;D.&lt;/strong&gt; Range, Membership &amp;amp; Search Operators&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;E.&lt;/strong&gt; &lt;code&gt;COUNT&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;F.&lt;/strong&gt; &lt;code&gt;CASE WHEN&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end, you'll be able to design a schema, populate it, and write queries that go well beyond &lt;code&gt;SELECT *&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Section A: Building the Database
&lt;/h2&gt;

&lt;p&gt;Before writing a single query, we need somewhere for the data to live. In SQL, a &lt;strong&gt;schema&lt;/strong&gt; is a named container that groups related tables together — helpful once a database has dozens of tables across different departments (academics, finance, HR, etc.).&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;CREATE&lt;/span&gt; &lt;span class="k"&gt;SCHEMA&lt;/span&gt; &lt;span class="n"&gt;greenwood_academy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;USE&lt;/span&gt; &lt;span class="n"&gt;greenwood_academy&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;-- MySQL syntax; in PostgreSQL: SET search_path TO greenwood_academy;&lt;/span&gt;

&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;student_id&lt;/span&gt;      &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;first_name&lt;/span&gt;      &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;last_name&lt;/span&gt;       &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;gender&lt;/span&gt;          &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;date_of_birth&lt;/span&gt;   &lt;span class="nb"&gt;DATE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt;           &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;city&lt;/span&gt;            &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;subjects&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;subject_id&lt;/span&gt;      &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;subject_name&lt;/span&gt;    &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt; &lt;span class="k"&gt;UNIQUE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;department&lt;/span&gt;      &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;teacher_name&lt;/span&gt;    &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="n"&gt;credits&lt;/span&gt;         &lt;span class="nb"&gt;INT&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;result_id&lt;/span&gt;       &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;student_id&lt;/span&gt;      &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;subject_id&lt;/span&gt;      &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;marks&lt;/span&gt;           &lt;span class="nb"&gt;INT&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;exam_date&lt;/span&gt;       &lt;span class="nb"&gt;DATE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;grade&lt;/span&gt;           &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;FOREIGN&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="k"&gt;FOREIGN&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subject_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;REFERENCES&lt;/span&gt; &lt;span class="n"&gt;subjects&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subject_id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Schemas evolve, and &lt;code&gt;ALTER TABLE&lt;/code&gt; lets you change a table without rebuilding it:&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="c1"&gt;-- Add a column&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="k"&gt;ADD&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;phone_number&lt;/span&gt; &lt;span class="nb"&gt;VARCHAR&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Rename a column&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;subjects&lt;/span&gt; &lt;span class="k"&gt;RENAME&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;credits&lt;/span&gt; &lt;span class="k"&gt;TO&lt;/span&gt; &lt;span class="n"&gt;credit_hours&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Remove a column that's no longer needed&lt;/span&gt;
&lt;span class="k"&gt;ALTER&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="k"&gt;DROP&lt;/span&gt; &lt;span class="k"&gt;COLUMN&lt;/span&gt; &lt;span class="n"&gt;phone_number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is a common real-world pattern: add a column to test whether you need it, then drop it once you've decided it doesn't belong.&lt;/p&gt;




&lt;h2&gt;
  
  
  Section B: Filling the Database
&lt;/h2&gt;

&lt;p&gt;With the structure ready, &lt;code&gt;INSERT INTO&lt;/code&gt; adds rows:&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;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;gender&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;date_of_birth&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;class&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;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Amina'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Wanjiku'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'F'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2008-03-12'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Nairobi'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Brian'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ochieng'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'M'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2007-07-25'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mombasa'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Cynthia'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mutua'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'F'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2008-11-05'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Kisumu'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'David'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Kamau'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'M'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2007-02-18'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 4'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Nairobi'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Esther'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Akinyi'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'F'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2009-06-30'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Nakuru'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;subjects&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;subject_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subject_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;teacher_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;credit_hours&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mathematics'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Sciences'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mr. Njoroge'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'English'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Languages'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ms. Adhiambo'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Biology'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Sciences'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Ms. Otieno'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Computer Studies'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Sciences'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mr. Oduya'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;student_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;subject_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;exam_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;grade&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;78&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-15'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'B'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-16'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'A'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;92&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-15'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'A'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;49&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-16'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'D'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Data isn't static — &lt;code&gt;UPDATE&lt;/code&gt; and &lt;code&gt;DELETE&lt;/code&gt; handle corrections:&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="c1"&gt;-- Esther moved from Nakuru to Nairobi&lt;/span&gt;
&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Nairobi'&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;student_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- A mark was entered wrong: 49 should have been 59&lt;/span&gt;
&lt;span class="k"&gt;UPDATE&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt;
&lt;span class="k"&gt;SET&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;59&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;result_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- A result was cancelled and needs to be removed&lt;/span&gt;
&lt;span class="k"&gt;DELETE&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;result_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Always confirm your inserts landed correctly:&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="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;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;SELECT&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;FROM&lt;/span&gt; &lt;span class="n"&gt;subjects&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;SELECT&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;FROM&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Section C: Querying the Data
&lt;/h2&gt;

&lt;p&gt;Filtering rows with &lt;code&gt;WHERE&lt;/code&gt; is where SQL starts to feel powerful:&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="c1"&gt;-- All Form 4 students&lt;/span&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;students&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Form 4'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- All Sciences subjects&lt;/span&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;subjects&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Sciences'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- All exam results with strong performance&lt;/span&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;exam_results&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;marks&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="c1"&gt;-- Only female students&lt;/span&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;students&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;gender&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'F'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Combine conditions with &lt;code&gt;AND&lt;/code&gt; / &lt;code&gt;OR&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="c1"&gt;-- Form 3 students from Nairobi&lt;/span&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;students&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Form 3'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Nairobi'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Form 2 or Form 4 students&lt;/span&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;students&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Form 2'&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Form 4'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And joins pull related tables together — for example, showing each result with the student's name and subject:&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;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subject_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;marks&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;student_id&lt;/span&gt;
&lt;span class="k"&gt;JOIN&lt;/span&gt; &lt;span class="n"&gt;subjects&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt; &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subject_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;subject_id&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Section D: Range, Membership &amp;amp; Search Operators
&lt;/h2&gt;

&lt;p&gt;Instead of chaining several comparisons, SQL offers compact operators for common patterns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;code&gt;BETWEEN&lt;/code&gt; — range checks&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="c1"&gt;-- Results in the "middle" band&lt;/span&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;exam_results&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Exams within a date window&lt;/span&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;exam_results&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;exam_date&lt;/span&gt; &lt;span class="k"&gt;BETWEEN&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-15'&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="s1"&gt;'2024-03-18'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;IN&lt;/code&gt; / &lt;code&gt;NOT IN&lt;/code&gt; — membership checks&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="c1"&gt;-- Students in specific cities&lt;/span&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;students&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;city&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Nairobi'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Mombasa'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Kisumu'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;-- Students outside the lower forms&lt;/span&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;students&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Form 2'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 3'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;code&gt;LIKE&lt;/code&gt; — pattern/text search&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="c1"&gt;-- First names starting with 'A' or 'E'&lt;/span&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;students&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'A%'&lt;/span&gt; &lt;span class="k"&gt;OR&lt;/span&gt; &lt;span class="n"&gt;first_name&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'E%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- Subjects with "Studies" in the name&lt;/span&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;subjects&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;subject_name&lt;/span&gt; &lt;span class="k"&gt;LIKE&lt;/span&gt; &lt;span class="s1"&gt;'%Studies%'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Section E: COUNT
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;COUNT&lt;/code&gt; collapses many rows into a single summary number — the basis of almost every dashboard metric.&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="c1"&gt;-- How many students are in Form 3?&lt;/span&gt;
&lt;span class="k"&gt;SELECT&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;form3_count&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Form 3'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;-- How many results are 70 marks or above?&lt;/span&gt;
&lt;span class="k"&gt;SELECT&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;strong_results&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;marks&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pairing &lt;code&gt;COUNT&lt;/code&gt; with &lt;code&gt;GROUP BY&lt;/code&gt; gives per-category breakdowns:&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="k"&gt;class&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;student_count&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;class&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;student_count&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Section F: CASE WHEN
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;CASE WHEN&lt;/code&gt; brings if/else logic directly into a query — perfect for turning raw numbers into human-readable labels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Grading exam performance:&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;student_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;subject_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;marks&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;CASE&lt;/span&gt;
        &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&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="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Distinction'&lt;/span&gt;
        &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&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="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Merit'&lt;/span&gt;
        &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Pass'&lt;/span&gt;
        &lt;span class="k"&gt;ELSE&lt;/span&gt; &lt;span class="s1"&gt;'Fail'&lt;/span&gt;
    &lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;performance&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Classifying students by seniority:&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;first_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="k"&gt;CASE&lt;/span&gt;
        &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Form 3'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 4'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Senior'&lt;/span&gt;
        &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="k"&gt;IN&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'Form 1'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'Form 2'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="s1"&gt;'Junior'&lt;/span&gt;
    &lt;span class="k"&gt;END&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;student_level&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;students&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can even combine &lt;code&gt;CASE WHEN&lt;/code&gt; with &lt;code&gt;COUNT&lt;/code&gt; to build an instant summary report:&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="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&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="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;END&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;distinctions&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="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&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="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;80&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;END&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;merits&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="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;END&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;passes&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="k"&gt;CASE&lt;/span&gt; &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="n"&gt;marks&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt; &lt;span class="k"&gt;THEN&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;END&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;fails&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;exam_results&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;One query, an entire school's performance snapshot.&lt;/p&gt;




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

&lt;p&gt;Starting from nothing, we:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Designed&lt;/strong&gt; a schema and three related tables (Section A)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Populated&lt;/strong&gt; them and corrected mistakes with &lt;code&gt;UPDATE&lt;/code&gt;/&lt;code&gt;DELETE&lt;/code&gt; (Section B)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Filtered and joined&lt;/strong&gt; data with &lt;code&gt;WHERE&lt;/code&gt; (Section C)&lt;/li&gt;
&lt;li&gt;Used &lt;strong&gt;range, membership, and search operators&lt;/strong&gt; for precise filtering (Section D)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Aggregated&lt;/strong&gt; results with &lt;code&gt;COUNT&lt;/code&gt; (Section E)&lt;/li&gt;
&lt;li&gt;Added &lt;strong&gt;conditional logic&lt;/strong&gt; with &lt;code&gt;CASE WHEN&lt;/code&gt; (Section F)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These six building blocks - schema design, data manipulation, filtering, operators, aggregation, and conditional logic, cover most of what you'll reach for in day-to-day SQL work, whether you're managing a school's records or analyzing a company's sales.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Securely Connecting Power BI to an Aiven PostgreSQL Database Using SSL Certificates</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Fri, 10 Jul 2026 18:57:31 +0000</pubDate>
      <link>https://dev.to/yeggie/securely-connecting-power-bi-to-an-aiven-postgresql-database-using-ssl-certificates-fd1</link>
      <guid>https://dev.to/yeggie/securely-connecting-power-bi-to-an-aiven-postgresql-database-using-ssl-certificates-fd1</guid>
      <description>&lt;p&gt;&lt;em&gt;Learn how to connect Power BI Desktop to an Aiven PostgreSQL database using SSL certificates, troubleshoot common connection issues, and start building dashboards securely.&lt;/em&gt;&lt;/p&gt;




&lt;p&gt;Cloud-hosted databases have become the backbone of modern analytics, and platforms like &lt;strong&gt;Aiven&lt;/strong&gt; make it incredibly easy to deploy and manage PostgreSQL instances. But if you're connecting &lt;strong&gt;Power BI Desktop&lt;/strong&gt; to an Aiven database for the first time, you might run into SSL certificate errors or wonder why the connection isn't as straightforward as it is with a local database.&lt;/p&gt;

&lt;p&gt;I recently faced the same challenge while building a Power BI dashboard, and after a bit of troubleshooting, I discovered that the solution was simply trusting Aiven's SSL certificate through Windows.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through the complete process so you can connect securely and start building dashboards without the frustration.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before we begin, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Power BI Desktop installed&lt;/li&gt;
&lt;li&gt;An active Aiven PostgreSQL service&lt;/li&gt;
&lt;li&gt;Your database credentials (Host, Port, Username, Password)&lt;/li&gt;
&lt;li&gt;The Aiven CA certificate (&lt;code&gt;ca.pem&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Administrator access to install certificates on Windows&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How the Connection Works
&lt;/h2&gt;

&lt;p&gt;Power BI communicates with your PostgreSQL database over an encrypted SSL connection. Before Windows allows that connection, it must trust the certificate used by Aiven.&lt;/p&gt;

&lt;p&gt;Once the certificate is installed, Power BI can securely authenticate and retrieve your data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture Diagram&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Power BI Desktop&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Windows Certificate Store&lt;br&gt;
(Trusted Root Certification Authorities)&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Encrypted SSL Connection&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Aiven PostgreSQL Database&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 1: Download the CA Certificate
&lt;/h3&gt;

&lt;p&gt;Log in to the &lt;strong&gt;Aiven Console&lt;/strong&gt; and open your PostgreSQL service.&lt;/p&gt;

&lt;p&gt;Under &lt;strong&gt;Connection Information&lt;/strong&gt;, download the &lt;strong&gt;CA Certificate&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The downloaded file is usually named: ca.pem&lt;/p&gt;

&lt;p&gt;Save it somewhere convenient.&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%2Fvq0os1y66m4mdlb0w05f.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%2Fvq0os1y66m4mdlb0w05f.png" alt="aiven cert" width="799" height="378"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step 2: Trust the Certificate in Windows
&lt;/h3&gt;

&lt;p&gt;Before Power BI can connect securely, Windows needs to trust the certificate.&lt;/p&gt;

&lt;p&gt;Open the Windows Run dialog (&lt;code&gt;Win + R&lt;/code&gt;) and type: certmgr.msc&lt;/p&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;Certificates
└── Trusted Root Certification Authorities
    └── Certificates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Right-click &lt;strong&gt;Certificates&lt;/strong&gt;, then select:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;All Tasks
    ↓
Import...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Certificate Import Wizard will open.&lt;/p&gt;

&lt;p&gt;Browse to the downloaded certificate and complete the wizard.&lt;/p&gt;

&lt;p&gt;Once imported, Windows will trust Aiven's certificate.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Depending on your environment, you may need to convert the certificate from &lt;code&gt;.pem&lt;/code&gt; to &lt;code&gt;.cer&lt;/code&gt; before importing it.&lt;/p&gt;
&lt;/blockquote&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%2F6ghapifjbf0gjc3nfq8o.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%2F6ghapifjbf0gjc3nfq8o.png" alt="I Windows Certificate Manager showing Trusted Root Certification Authorities" width="777" height="520"&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%2Ffoen0s2o1iprxurngo56.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%2Ffoen0s2o1iprxurngo56.png" alt="Certificate Import Wizard" width="277" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Launch &lt;strong&gt;Power BI Desktop&lt;/strong&gt;.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Home → Get Data → PostgreSQL Database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A PostgreSQL connection dialog will appear.&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%2Fudkf3v4lf4fpdhkqzn7b.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%2Fudkf3v4lf4fpdhkqzn7b.png" alt="Get Data window with PostgreSQL" width="800" height="782"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Enter Your Connection Details
&lt;/h3&gt;

&lt;p&gt;One mistake many beginners make is copying the &lt;strong&gt;entire PostgreSQL connection URL&lt;/strong&gt; into the Server field.&lt;/p&gt;

&lt;p&gt;For example, this &lt;strong&gt;will not work&lt;/strong&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;postgres://avnadmin:password@hostname:12345/defaultdb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Power BI expects only the &lt;strong&gt;hostname and port&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Enter the details like this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;your-service.aivencloud.com:12345
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Database&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Choose your preferred connectivity mode:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Import&lt;/strong&gt; – Copies the data into Power BI (recommended for most users)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DirectQuery&lt;/strong&gt; – Queries the database in real time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then click &lt;strong&gt;OK&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi6spuy3mni3298mnuno9.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%2Fi6spuy3mni3298mnuno9.png" alt="PostgreSQL connection window" width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Power BI will prompt you for your database credentials.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Username:&lt;/strong&gt; &lt;code&gt;avnadmin&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Password:&lt;/strong&gt; Your PostgreSQL password&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Since the certificate has already been trusted by Windows, Power BI can now establish a secure SSL connection.&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%2Flen9wkvk3b73xq9lryrx.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%2Flen9wkvk3b73xq9lryrx.png" alt="Authentication dialog" width="799" height="402"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Select Your Tables
&lt;/h3&gt;

&lt;p&gt;If the connection succeeds, the &lt;strong&gt;Navigator&lt;/strong&gt; window will display all available tables.&lt;/p&gt;

&lt;p&gt;Choose the tables you want and click:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Load&lt;/strong&gt; to import the data immediately, or&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transform Data&lt;/strong&gt; if you want to clean or shape your data first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I usually recommend &lt;strong&gt;Transform Data&lt;/strong&gt; so you can verify data types and remove unnecessary columns before building your report.&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%2Fm94s2skswn9s3dw7qgws.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%2Fm94s2skswn9s3dw7qgws.png" alt="Navigator window listing PostgreSQL tables" width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Build Your Dashboard
&lt;/h3&gt;

&lt;p&gt;Congratulations! &lt;/p&gt;

&lt;p&gt;Your Power BI report is now connected securely to your Aiven PostgreSQL database.&lt;/p&gt;

&lt;p&gt;From here, you can create:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sales dashboards&lt;/li&gt;
&lt;li&gt;Customer analytics&lt;/li&gt;
&lt;li&gt;Operational reports&lt;/li&gt;
&lt;li&gt;Financial dashboards&lt;/li&gt;
&lt;li&gt;KPI tracking&lt;/li&gt;
&lt;li&gt;Real-time business insights&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every refresh will retrieve the latest data securely from your cloud database.&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%2Frhyzn5e5h6eh82ypwmy3.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%2Frhyzn5e5h6eh82ypwmy3.png" alt="Final Power BI dashboard" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Issues and Their Fixes
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SSL Certificate Error
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Windows doesn't trust the certificate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Import the Aiven CA certificate into the &lt;strong&gt;Trusted Root Certification Authorities&lt;/strong&gt; store.&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication Failed
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Incorrect username or password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Verify your PostgreSQL credentials in the Aiven Console.&lt;/p&gt;

&lt;h3&gt;
  
  
  Could Not Connect to Server
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Cause:&lt;/strong&gt; Incorrect hostname or port.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt; Use the &lt;strong&gt;Host&lt;/strong&gt; and &lt;strong&gt;Port&lt;/strong&gt; values from Aiven's &lt;strong&gt;Connection Information&lt;/strong&gt; page—not the PostgreSQL connection URL.&lt;/p&gt;

&lt;h3&gt;
  
  
  Invalid Server Name
&lt;/h3&gt;

&lt;p&gt;If your Server field looks like this: postgres://avnadmin:password@hostname/defaultdb&lt;/p&gt;

&lt;p&gt;Power BI will reject it.&lt;/p&gt;

&lt;p&gt;Instead, enter only:&lt;br&gt;
hostname:port&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;p&gt;When working with cloud-hosted databases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Never expose your database password in screenshots.&lt;/li&gt;
&lt;li&gt;Avoid sharing full connection URLs publicly.&lt;/li&gt;
&lt;li&gt;Keep your CA certificate in a secure location.&lt;/li&gt;
&lt;li&gt;Rotate passwords regularly.&lt;/li&gt;
&lt;li&gt;Use least-privilege database accounts whenever possible.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Connecting Power BI to an Aiven PostgreSQL database might seem intimidating at first, especially if you're new to SSL certificates. However, once you understand how Windows trusts certificates and how Power BI expects connection details, the process becomes straightforward.&lt;/p&gt;

&lt;p&gt;The biggest lesson I learned was not to paste the full PostgreSQL connection URL into the &lt;strong&gt;Server&lt;/strong&gt; field. Instead, use only the hostname and port, install the Aiven CA certificate into Windows' trusted certificate store, and let Power BI handle the rest.&lt;/p&gt;

&lt;p&gt;With a secure connection in place, you're free to focus on what really matters—transforming raw data into meaningful insights through interactive dashboards.&lt;/p&gt;

&lt;p&gt;If this guide helped you, let me know in the comments! I'd also love to hear about your experience connecting Power BI to cloud databases or any tips you've discovered along the way.&lt;/p&gt;

&lt;p&gt;Happy dashboard building!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding Relationships, Schemas, and Joins in Power BI</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Mon, 29 Jun 2026 07:11:44 +0000</pubDate>
      <link>https://dev.to/yeggie/understanding-relationships-schemas-and-joins-in-power-bi-1i0o</link>
      <guid>https://dev.to/yeggie/understanding-relationships-schemas-and-joins-in-power-bi-1i0o</guid>
      <description>&lt;p&gt;Power BI isn't just about creating beautiful dashboards it's about telling the right story with your data. Behind every interactive report is a well-designed &lt;strong&gt;data model&lt;/strong&gt; that connects tables efficiently. If you've ever wondered why your visuals aren't filtering correctly or why your measures return unexpected results, chances are your relationships need attention.&lt;/p&gt;

&lt;p&gt;In this article, we'll explore relationships, schemas, and joins in Power BI and see how they work together to build reliable reports.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is a Data Model?
&lt;/h2&gt;

&lt;p&gt;A &lt;strong&gt;data model&lt;/strong&gt; is the collection of tables and the relationships between them. Instead of storing everything in one large table, Power BI encourages organizing data into logical tables such as &lt;strong&gt;Customers&lt;/strong&gt;, &lt;strong&gt;Orders&lt;/strong&gt;, &lt;strong&gt;Products&lt;/strong&gt;, and &lt;strong&gt;Sales&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsmiy4ysdg02edjytda3a.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%2Fsmiy4ysdg02edjytda3a.png" alt="Data Model" width="558" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1: A simple Power BI data model connecting Customers, Orders, Products, and Sales tables.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Understanding Relationships
&lt;/h2&gt;

&lt;p&gt;Relationships allow Power BI to connect tables using common columns.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Primary Key (PK):&lt;/strong&gt; A unique identifier in a table (e.g., &lt;code&gt;CustomerID&lt;/code&gt; in the Customers table).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Foreign Key (FK):&lt;/strong&gt; A column that references the primary key in another table (e.g., &lt;code&gt;CustomerID&lt;/code&gt; in Orders).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Power BI supports three relationship types:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-to-One:&lt;/strong&gt; One record matches one record.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One-to-Many:&lt;/strong&gt; One customer can place many orders &lt;em&gt;(the most common relationship)&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many-to-Many:&lt;/strong&gt; Multiple records in one table relate to multiple records in another.&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%2Fbywco99r55zinh73rwi4.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%2Fbywco99r55zinh73rwi4.png" alt="Relationships" width="488" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Star Schema vs. Snowflake Schema
&lt;/h2&gt;

&lt;p&gt;When building a Power BI model, you'll often hear about &lt;strong&gt;Star&lt;/strong&gt; and &lt;strong&gt;Snowflake&lt;/strong&gt; schemas.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Star Schema&lt;/strong&gt; places a central &lt;strong&gt;Fact&lt;/strong&gt; table (such as Sales) in the middle, surrounded by &lt;strong&gt;Dimension&lt;/strong&gt; tables like Customers, Products, and Date. Microsoft recommends this design because it simplifies relationships and improves report performance.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;Snowflake Schema&lt;/strong&gt; normalizes dimension tables into additional related tables. While it reduces data redundancy, it also increases model complexity and can make reports harder to maintain.&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%2Fwa5tpvifpo8mbwz709xi.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%2Fwa5tpvifpo8mbwz709xi.png" alt="Star Schema" width="441" height="291"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2: A Star Schema with one fact table connected to multiple dimension tables.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Relationship Cardinality and Cross-Filter Direction
&lt;/h2&gt;

&lt;p&gt;When creating relationships, Power BI asks you to define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cardinality&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One-to-One&lt;/li&gt;
&lt;li&gt;One-to-Many&lt;/li&gt;
&lt;li&gt;Many-to-Many&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cross-filter Direction&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single:&lt;/strong&gt; Recommended for most models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Both:&lt;/strong&gt; Useful in specific scenarios but can introduce ambiguity if overused.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82agtirztlaieln6ubjw.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%2F82agtirztlaieln6ubjw.png" alt="Cross-filtering" width="452" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 3: Configuring cardinality and cross-filter direction.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Automatic vs. Manual Relationships
&lt;/h2&gt;

&lt;p&gt;Power BI can automatically detect relationships when tables share matching column names and compatible data types.&lt;/p&gt;

&lt;p&gt;However, manual relationship creation is often necessary when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Column names differ.&lt;/li&gt;
&lt;li&gt;Multiple relationships exist between tables.&lt;/li&gt;
&lt;li&gt;Auto-detection fails due to data quality issues.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Relationships vs. Power Query Joins
&lt;/h2&gt;

&lt;p&gt;Although both connect data, they serve different purposes.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Model Relationships&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Power Query Merge (Joins)&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Connect tables without combining them&lt;/td&gt;
&lt;td&gt;Combine data into a new table&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Created in &lt;strong&gt;Model View&lt;/strong&gt;
&lt;/td&gt;
&lt;td&gt;Performed in &lt;strong&gt;Power Query Editor&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Used after data is loaded&lt;/td&gt;
&lt;td&gt;Used during data preparation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ideal for Star Schemas&lt;/td&gt;
&lt;td&gt;Ideal for cleaning and enriching data&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Build a &lt;strong&gt;Star Schema&lt;/strong&gt; whenever possible for better performance.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;One-to-Many&lt;/strong&gt; relationships for most business scenarios.&lt;/li&gt;
&lt;li&gt;Keep tables separate using relationships instead of merging everything together.&lt;/li&gt;
&lt;li&gt;Reserve &lt;strong&gt;Power Query Merge&lt;/strong&gt; for data transformation and cleaning.&lt;/li&gt;
&lt;li&gt;Review cardinality and cross-filter direction carefully to ensure accurate report interactions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A clean data model is the foundation of every successful Power BI report. Taking the time to design relationships correctly will make your dashboards faster, easier to maintain, and more reliable as your data grows.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Power BI and DAX: Transforming Data into Business Insights</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Wed, 24 Jun 2026 07:40:17 +0000</pubDate>
      <link>https://dev.to/yeggie/power-bi-and-dax-transforming-data-into-business-insights-301a</link>
      <guid>https://dev.to/yeggie/power-bi-and-dax-transforming-data-into-business-insights-301a</guid>
      <description>&lt;p&gt;In today's data-driven environment, organizations need more than just data they need actionable insights. Microsoft Power BI has emerged as one of the leading Business Intelligence (BI) tools, enabling users to clean, analyze, visualize, and share data effectively.&lt;/p&gt;

&lt;p&gt;A key component that makes Power BI powerful is DAX (Data Analysis Expressions), a formula language used to create calculations, measures, and business metrics that drive meaningful reporting.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Importance of Data Cleaning
&lt;/h2&gt;

&lt;p&gt;Before analysis begins, data must be prepared. Data cleaning ensures that datasets are accurate, consistent, and ready for reporting. In Power BI, tools such as Power Query help users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Remove duplicate records&lt;/li&gt;
&lt;li&gt;Handle missing values&lt;/li&gt;
&lt;li&gt;Correct data types&lt;/li&gt;
&lt;li&gt;Standardize formats&lt;/li&gt;
&lt;li&gt;Transform raw data into usable information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Clean data is the foundation of reliable dashboards and accurate business decisions.&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%2Frgc55lkez2mowavkrmqe.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%2Frgc55lkez2mowavkrmqe.png" alt="Data Cleaning" width="800" height="546"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;DAX, short for Data Analysis Expressions, is the formula language used in Power BI to create calculations and analytical logic. Unlike traditional spreadsheet formulas, DAX works with entire tables, columns, and relationships.&lt;/p&gt;

&lt;p&gt;DAX is commonly used to calculate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Total Revenue&lt;/li&gt;
&lt;li&gt;Total Profit&lt;/li&gt;
&lt;li&gt;Average Sales&lt;/li&gt;
&lt;li&gt;Profit Margins&lt;/li&gt;
&lt;li&gt;Key Performance Indicators (KPIs)&lt;/li&gt;
&lt;li&gt;Dynamic business metrics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These calculations help transform raw datasets into meaningful insights that support decision-making.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measures vs Calculated Columns
&lt;/h2&gt;

&lt;p&gt;One of the most important concepts in DAX is understanding the difference between Measures and Calculated Columns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measures&lt;/strong&gt; are dynamic calculations that change based on filters and report interactions. They are commonly used in visualizations and dashboards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Calculated Columns&lt;/strong&gt; perform row-by-row calculations and store the results in the data model. They are useful for creating categories, labels, and classifications.&lt;/p&gt;

&lt;p&gt;Knowing when to use each improves report performance and efficiency.&lt;/p&gt;

&lt;h2&gt;
  
  
  Common DAX Functions
&lt;/h2&gt;

&lt;p&gt;Several DAX functions are essential for effective analysis:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SUM&lt;/strong&gt; – Calculates totals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AVERAGE&lt;/strong&gt; – Finds average values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;COUNTROWS&lt;/strong&gt; – Counts records.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DISTINCTCOUNT&lt;/strong&gt; – Counts unique values.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IF&lt;/strong&gt; – Performs logical testing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SWITCH&lt;/strong&gt; – Simplifies multiple conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DIVIDE&lt;/strong&gt; – Safely performs division calculations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These functions help analysts create dynamic and insightful reports.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Interactive Dashboards
&lt;/h2&gt;

&lt;p&gt;Power BI dashboards combine data visualizations, KPIs, filters, and DAX calculations into a single interactive view.&lt;/p&gt;

&lt;p&gt;Effective dashboards allow users to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Monitor performance in real time&lt;/li&gt;
&lt;li&gt;Track business goals&lt;/li&gt;
&lt;li&gt;Identify trends and patterns&lt;/li&gt;
&lt;li&gt;Explore data using filters and slicers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining clean data, DAX calculations, and compelling visualizations, dashboards transform complex information into actionable business intelligence.&lt;/p&gt;

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

&lt;p&gt;Power BI is more than a visualization tool—it is a complete analytics platform. Through data cleaning, DAX calculations, and interactive dashboards, organizations can turn raw data into meaningful insights. As businesses increasingly rely on data-driven decisions, mastering Power BI and DAX has become an essential skill for modern analysts and professionals.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git and GitHub: Essential Tools for Modern Software Development</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:51:24 +0000</pubDate>
      <link>https://dev.to/yeggie/git-and-github-essential-tools-for-modern-software-development-2ing</link>
      <guid>https://dev.to/yeggie/git-and-github-essential-tools-for-modern-software-development-2ing</guid>
      <description>&lt;p&gt;In modern software development, managing code efficiently is just as important as writing it. Whether you're working on personal projects or collaborating with a team, &lt;strong&gt;Git&lt;/strong&gt; and &lt;strong&gt;GitHub&lt;/strong&gt; have become essential tools for version control and project management.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Git?
&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system that helps developers track changes in their code over time. Instead of saving multiple versions of a project manually, Git records every modification, allowing developers to review, revert, and manage changes efficiently.&lt;/p&gt;

&lt;p&gt;Some key benefits of Git include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tracking code changes over time&lt;/li&gt;
&lt;li&gt;Reverting to previous versions when needed&lt;/li&gt;
&lt;li&gt;Working on multiple features simultaneously using branches&lt;/li&gt;
&lt;li&gt;Facilitating collaboration among developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Git, developers can experiment with new ideas without risking the stability of the main project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding GitHub
&lt;/h2&gt;

&lt;p&gt;While Git manages code locally, GitHub is a cloud-based platform that hosts Git repositories online. It enables developers to store, share, and collaborate on projects from anywhere in the world.&lt;/p&gt;

&lt;p&gt;GitHub provides features such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repository hosting&lt;/li&gt;
&lt;li&gt;Team collaboration&lt;/li&gt;
&lt;li&gt;Pull requests and code reviews&lt;/li&gt;
&lt;li&gt;Issue tracking&lt;/li&gt;
&lt;li&gt;Project documentation&lt;/li&gt;
&lt;li&gt;Continuous Integration and Deployment (CI/CD)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These capabilities make GitHub one of the most widely used platforms in software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Core Git Commands Every Developer Should Know
&lt;/h2&gt;

&lt;p&gt;Getting started with Git involves learning a few fundamental commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init
git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Initial commit"&lt;/span&gt;
git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other useful commands include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;git clone&lt;/code&gt; – Copy a repository to your local machine.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git pull&lt;/code&gt; – Retrieve the latest changes from a remote repository.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git branch&lt;/code&gt; – Create and manage branches.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git merge&lt;/code&gt; – Combine changes from different branches.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;git status&lt;/code&gt; – Check the current state of your repository.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mastering these commands forms the foundation of effective version control.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Power of Branching
&lt;/h2&gt;

&lt;p&gt;One of Git's most powerful features is branching. Branches allow developers to work on new features, bug fixes, or experiments independently without affecting the main codebase.&lt;/p&gt;

&lt;p&gt;Once the work is complete, changes can be reviewed and merged back into the main branch. This workflow improves collaboration and reduces the risk of introducing errors into production code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Git and GitHub Matter
&lt;/h2&gt;

&lt;p&gt;Git and GitHub have transformed how software is developed by enabling seamless collaboration, better project organization, and reliable version control. They are used by individual developers, startups, and large technology companies alike.&lt;/p&gt;

&lt;p&gt;Beyond software development, GitHub also serves as a portfolio platform where developers can showcase projects, contribute to open-source software, and demonstrate technical skills to potential employers.&lt;/p&gt;

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

&lt;p&gt;Git and GitHub are fundamental tools for anyone pursuing a career in technology. Git provides a reliable system for tracking and managing code changes, while GitHub enables collaboration and project sharing on a global scale. Together, they form the backbone of modern software development and are essential skills for every aspiring developer.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>git</category>
      <category>github</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Excel Functions, Pivot Charts, and Dashboards: Turning Data into Insights</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Tue, 23 Jun 2026 07:44:19 +0000</pubDate>
      <link>https://dev.to/yeggie/excel-functions-pivot-charts-and-dashboards-turning-data-into-insights-34l8</link>
      <guid>https://dev.to/yeggie/excel-functions-pivot-charts-and-dashboards-turning-data-into-insights-34l8</guid>
      <description>&lt;p&gt;Microsoft Excel remains one of the most powerful tools for data analysis and reporting. From organizing large datasets to creating interactive dashboards, Excel enables users to transform raw data into meaningful insights that support informed decision-making.&lt;/p&gt;

&lt;h2&gt;
  
  
  Excel Functions: The Foundation of Data Analysis
&lt;/h2&gt;

&lt;p&gt;Excel functions automate calculations and simplify complex tasks, making data analysis faster and more accurate. Some of the most widely used functions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VLOOKUP/XLOOKUP&lt;/strong&gt; – Retrieve information from large datasets.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SUMIF and COUNTIF&lt;/strong&gt; – Perform calculations based on specific conditions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;IF Statements&lt;/strong&gt; – Create logical tests and automate decision-making.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AVERAGE, MAX, and MIN&lt;/strong&gt; – Generate quick statistical summaries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These functions reduce manual work, improve accuracy, and help users uncover valuable information from their data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pivot Tables and Pivot Charts
&lt;/h2&gt;

&lt;p&gt;When working with thousands of records, analyzing data manually can be time-consuming. Pivot Tables provide a dynamic way to summarize and organize data without altering the original dataset.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Calculate totals and averages.&lt;/li&gt;
&lt;li&gt;Group data by categories.&lt;/li&gt;
&lt;li&gt;Compare performance across regions, products, or periods.&lt;/li&gt;
&lt;li&gt;Identify trends and patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pivot Charts take this analysis a step further by visualizing Pivot Table results. Instead of reading rows of numbers, users can quickly understand performance through charts such as bar charts, line charts, and pie charts.&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%2Fjnqupl6524rg6htlfwoa.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%2Fjnqupl6524rg6htlfwoa.png" alt="Pivot Charts" width="474" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, a sales team can use Pivot Charts to compare monthly revenue across different regions and identify top-performing products at a glance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dashboards: Bringing Everything Together
&lt;/h2&gt;

&lt;p&gt;Dashboards combine Excel functions, Pivot Tables, and Pivot Charts into a single interactive reporting tool. They provide a comprehensive overview of key metrics and business performance.&lt;/p&gt;

&lt;p&gt;A well-designed dashboard typically includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Key Performance Indicators (KPIs)&lt;/li&gt;
&lt;li&gt;Interactive charts&lt;/li&gt;
&lt;li&gt;Pivot Tables&lt;/li&gt;
&lt;li&gt;Slicers and filters&lt;/li&gt;
&lt;li&gt;Conditional formatting&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dashboards allow users to explore data dynamically and gain insights in real time. Instead of reviewing multiple spreadsheets, decision-makers can access all critical information from one centralized view.&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%2Fgfk5v2x8eg22a35oyt50.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%2Fgfk5v2x8eg22a35oyt50.png" alt="Dashboards" width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Organizations increasingly rely on data-driven decisions, making Excel proficiency a valuable skill across industries. Mastering functions, Pivot Tables, Pivot Charts, and dashboards enables professionals to analyze information efficiently, communicate insights effectively, and support strategic business decisions.&lt;/p&gt;

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

&lt;p&gt;Excel is far more than a spreadsheet application. Its powerful functions, Pivot Tables, Pivot Charts, and dashboards work together to transform raw data into actionable insights. Whether you're a student, analyst, or business professional, developing these skills can significantly improve your ability to understand, visualize, and communicate data.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Sat, 06 Jun 2026 12:48:16 +0000</pubDate>
      <link>https://dev.to/yeggie/-37p8</link>
      <guid>https://dev.to/yeggie/-37p8</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d" class="crayons-story__hidden-navigation-link"&gt;How is Excel Used in Real World Data Analysis?&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/yeggie" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3952225%2Fa5b87dcf-1c21-4d0b-8fc7-c68fd1aeb432.jpg" alt="yeggie profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/yeggie" class="crayons-story__secondary fw-medium m:hidden"&gt;
              joy yego
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                joy yego
                
              
              &lt;div id="story-author-preview-content-3830053" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/yeggie" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3952225%2Fa5b87dcf-1c21-4d0b-8fc7-c68fd1aeb432.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;joy yego&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 6&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d" id="article-link-3830053"&gt;
          How is Excel Used in Real World Data Analysis?
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>How is Excel Used in Real World Data Analysis?</title>
      <dc:creator>joy yego</dc:creator>
      <pubDate>Sat, 06 Jun 2026 12:47:42 +0000</pubDate>
      <link>https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d</link>
      <guid>https://dev.to/yeggie/how-is-excel-used-in-real-world-data-analysis-i4d</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is excel?&lt;/em&gt;&lt;/strong&gt; Excel is a program developed bey Microsoft used to store, organize, analyze and visualize data. It consists of rows running vertically and columns running horizontally,which can be manipulated by any user in any form that is using different formulas and functions within excel. &lt;/p&gt;

&lt;h2&gt;
  
  
  How is excel used in Data Analytics?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Data Analysis&lt;/em&gt;&lt;/strong&gt; is the process of collecting, cleaning, transforming and analyzing data to discover useful insights, identifying patterns that support informed decision making. From day to day organizations tend to generate large amounts of data from different transactions, customer interactions etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Uses of Excel for data analysis
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Customer analysis:&lt;/strong&gt; Based on the different customer information collected by different businesses, analysts use excel to analyze this information. For example, using excel you can discover using online store covers customers aged 18 to 32 years. &lt;br&gt;
&lt;strong&gt;Sales analysis:&lt;/strong&gt; Based on the different records analysts use excel to analyze the sales and discover for example the product that generates the most income.&lt;br&gt;
&lt;strong&gt;Excel is used for data collection and storage&lt;/strong&gt;:  allows analysts to collect and store large amounts of data. &lt;br&gt;
&lt;strong&gt;Visualization:&lt;/strong&gt;  to provide a quick view of the business performance through pie charts, KPIs etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are the different features in excel?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Excel is used for data cleaning and preparation:&lt;/strong&gt; Data usually contains  errors, duplicates, missing values and inconsistencies. Cleaning prepares the data for accurate analysis. This data can be cleaned using different excel tools such as : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Remove duplicates &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find and Replace &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Text to columns &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sort among others.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also in cleaning text data, there are different functions used in cleaning text data such as: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UPPER()&lt;/strong&gt; and &lt;strong&gt;LOWER()&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PROPER()&lt;/strong&gt; &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TRIM()&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data sorting, filtering and organizing:&lt;/strong&gt;&lt;br&gt;
 &lt;em&gt;Sorting&lt;/em&gt; is the arrangement of data in different orders such as ascending or descending among others. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Filtering&lt;/em&gt; allows one to display only rows that are in a certain criteria. &lt;/p&gt;

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

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

&lt;p&gt;&lt;strong&gt;Performing calculations:&lt;/strong&gt; Data analysis revolves around different mathematical and statistical functions and formulas to derive insights from the datasets quickly. These functions include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;sum()&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sumif()&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;count()&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Data validation:&lt;/strong&gt;  It involves restricting the type of data that a user inputs within the spreadsheet. It can be through drop downs or through custom inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Data Formatting&lt;/strong&gt;: This could be number formatting or conditional formatting. &lt;em&gt;Number formatting&lt;/em&gt; involves changes on numbers display without altering the actual value improving readability and meaning. Number formats include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Currency &lt;/li&gt;
&lt;li&gt;PercentageS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Conditional formatting:&lt;/em&gt; highlights cells based on rules or criteria. Helps in in spotting outliers and trends as well.&lt;/p&gt;

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

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

&lt;p&gt;Excel is a valuable data analytics tool that is underestimated. It has a friendly user interface which make it easier for anyone to use. It is used organize, clean , analyze and visualize data. One can perform different calculations and as well as creating reports and dashboard, transforming raw data into meaningful information used for decision making. &lt;/p&gt;

&lt;h2&gt;
  
  
  Reflection
&lt;/h2&gt;

&lt;p&gt;Learning Microsoft Excel has been an important step in my journey as an aspiring data analyst. At first, I viewed Excel as a simple spreadsheet application used for storing data and performing basic calculations. However, as I gained more experience, I discovered that Excel is a powerful analytical tool that can transform raw data into meaningful insights.&lt;/p&gt;

&lt;p&gt;Overall, learning Excel has strengthened my confidence in working with data and has inspired me to continue exploring the field of data analytics. It serves as a reminder that powerful insights often begin with mastering the fundamentals.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
