<?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: Ron Njuguna</title>
    <description>The latest articles on DEV Community by Ron Njuguna (@ron-njuguna).</description>
    <link>https://dev.to/ron-njuguna</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%2F3957033%2F6dced7f3-91ad-4508-803a-6eb35b02fdbf.png</url>
      <title>DEV Community: Ron Njuguna</title>
      <link>https://dev.to/ron-njuguna</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ron-njuguna"/>
    <language>en</language>
    <item>
      <title>Python Basics: Getting Started with Variables, Data Types Input and Output</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Fri, 18 Sep 2026 08:56:31 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/python-basics-getting-started-with-variables-data-types-input-and-output-1687</link>
      <guid>https://dev.to/ron-njuguna/python-basics-getting-started-with-variables-data-types-input-and-output-1687</guid>
      <description>&lt;p&gt;After learning the basics of SQL, I started working with Python. Python is one of the programming languages that is widely used in areas such as web development, automation, data analysis, artificial intelligence and scripting.&lt;/p&gt;

&lt;p&gt;As a beginner, I found that understanding the basic syntax and how Python handles data is important before moving on to more advanced topics.&lt;/p&gt;

&lt;p&gt;In this article, I will go through some of the Python basics I have learned, including variables, data types, input/output and basic Python syntax.&lt;br&gt;
A simple python syntax can be written as:&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%2Ffa1bp6o37njppqn0bkdo.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%2Ffa1bp6o37njppqn0bkdo.PNG" alt=" " width="227" height="61"&gt;&lt;/a&gt;&lt;br&gt;
The print() function displays information on the screen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Variables&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
A variable is used to store a value that we can use later in a program.&lt;br&gt;
For example:&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%2Fmp58ht8ognuh4pysqq98.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%2Fmp58ht8ognuh4pysqq98.PNG" alt=" " width="151" height="66"&gt;&lt;/a&gt;&lt;br&gt;
Here, name stores the text "Ron" while age stores the number 22.&lt;br&gt;
We can then use these variables:&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%2Ffkmwtnf8gfs0jc3oxbc5.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%2Ffkmwtnf8gfs0jc3oxbc5.PNG" alt=" " width="149" height="73"&gt;&lt;/a&gt;&lt;br&gt;
The output would then be:&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%2F8rotuzbfjkjbli714nqv.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%2F8rotuzbfjkjbli714nqv.PNG" alt=" " width="130" height="36"&gt;&lt;/a&gt;&lt;br&gt;
One thing I noticed when learning Python is that I don't have to specify the data type when creating a variable. Python determines the type based on the value assigned to it.&lt;br&gt;
For example:&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%2Fcgykf74pcjiqcbl8q3m7.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%2Fcgykf74pcjiqcbl8q3m7.PNG" alt=" " width="220" height="92"&gt;&lt;/a&gt;&lt;br&gt;
 &lt;strong&gt;&lt;u&gt;Python Data Types&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Python has several built-in data types. Some of the common ones I have learned are:&lt;br&gt;
str – used for text&lt;br&gt;
int – used for whole numbers&lt;br&gt;
float – used for decimal numbers&lt;br&gt;
bool – represents True or False&lt;br&gt;
list – stores multiple values in a collection&lt;br&gt;
A good example which shows the use of the types above are:&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%2Fxndfxgh3ehd6qi9vla19.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%2Fxndfxgh3ehd6qi9vla19.PNG" alt=" " width="304" height="123"&gt;&lt;/a&gt;&lt;br&gt;
We can use the type() function to check the data type of a variable:&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%2Fb93kjvu1xuby7tceq9nm.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%2Fb93kjvu1xuby7tceq9nm.PNG" alt=" " width="239" height="109"&gt;&lt;/a&gt;This is useful when working with data because it helps us understand what type of information a variable contains.&lt;br&gt;
&lt;strong&gt;&lt;u&gt;Input and output&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Programs are more useful when they can interact with users. Python provides the input() function to receive information from a user.&lt;br&gt;
An example is:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftcbkqmah7qftmwqnge3n.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%2Ftcbkqmah7qftmwqnge3n.PNG" alt=" " width="308" height="68"&gt;&lt;/a&gt;&lt;br&gt;
If the user enters:&lt;br&gt;
Ron&lt;br&gt;
The program will display:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flpya1vwpictt2ij6prlt.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%2Flpya1vwpictt2ij6prlt.PNG" alt=" " width="164" height="38"&gt;&lt;/a&gt;One important thing I learned is that input() returns the user's response as a string. If we want to work with a number, we need to convert it. For example:&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%2F16e4m14icruj5yo1uvxw.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%2F16e4m14icruj5yo1uvxw.PNG" alt=" " width="318" height="68"&gt;&lt;/a&gt;Here, int() converts the input into an integer.&lt;br&gt;
&lt;strong&gt;&lt;u&gt;Basic Python Syntax&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Python syntax is relatively straightforward, but indentation is very important. For example:&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%2F59fm8owrdml6rxe53135.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%2F59fm8owrdml6rxe53135.PNG" alt=" " width="271" height="120"&gt;&lt;/a&gt;The indentation tells Python which statements belong to the if and else blocks. Unlike some programming languages, Python does not require curly brackets {} to define these blocks.&lt;br&gt;
Python also allows us to add comments to our code:&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%2Ff2k59bbzt1gs4y5s1d4v.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%2Ff2k59bbzt1gs4y5s1d4v.PNG" alt=" " width="352" height="113"&gt;&lt;/a&gt;Comments are useful because they help explain what different parts of our code are doing.&lt;br&gt;
&lt;strong&gt;&lt;u&gt;A Practical Example&lt;br&gt;
&lt;/u&gt;&lt;/strong&gt;We can combine some of these concepts to create a simple program for calculating the total cost of a product.&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%2F0w7kox4xx9irv6nnw2vr.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%2F0w7kox4xx9irv6nnw2vr.PNG" alt=" " width="387" height="173"&gt;&lt;/a&gt;If I put the product name as Sugar, Quantity as 5 and Price as KSh2,000 the output would be:&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%2Fedumdsrag6viplz690y0.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%2Fedumdsrag6viplz690y0.PNG" alt=" " width="196" height="80"&gt;&lt;/a&gt;&lt;strong&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Learning Python starts with understanding the fundamentals. Variables allow us to store information, data types tell us what kind of information we are working with and input/output allows our programs to interact with users.&lt;br&gt;
I have also learned that Python's syntax is designed to be readable, but things such as indentation, correct data types and variable names are still important when writing programs.&lt;br&gt;
These concepts may seem simple, but they provide the foundation for more advanced Python topics such as loops, functions, object-oriented programming, file handling and working with databases.&lt;br&gt;
For me, the most important lesson at this stage is not just memorizing Python syntax but understanding how these basic concepts can be combined to solve simple, real-world problems.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>SQL Window Functions: Understanding PARTITION BY, ORDER BY, ROW_NUMBER and RANK</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Thu, 17 Sep 2026 06:48:05 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/sql-window-functions-understanding-partition-by-order-by-rownumber-and-rank-1ke0</link>
      <guid>https://dev.to/ron-njuguna/sql-window-functions-understanding-partition-by-order-by-rownumber-and-rank-1ke0</guid>
      <description>&lt;p&gt;As I continued learning SQL, I came across a concept that was initially a little confusing to me which was window functions.&lt;/p&gt;

&lt;p&gt;At first, they seemed similar to aggregate functions such as SUM() and AVG(). However, there is an important difference. Aggregate functions usually combine multiple rows into a single result while window functions allow us to perform calculations across related rows without removing the individual rows from the result.&lt;/p&gt;

&lt;p&gt;Window functions are particularly useful when working with rankings, running totals and data analysis.&lt;br&gt;
&lt;u&gt;&lt;br&gt;
&lt;strong&gt;What are window functions&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
Window functions are a powerful SQL feature that allows us to perform calculations across related rows while keeping the original data available in the result.&lt;br&gt;
The basic syntax looks like this:&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%2Foiu7qcwivzordzpjae4j.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%2Foiu7qcwivzordzpjae4j.PNG" alt=" " width="284" height="88"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The OVER() clause tells SQL that a window function is being used.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Understanding Partition By&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
PARTITION BY divides the results into groups before the window function is applied.&lt;br&gt;
For example, suppose we want to rank each customer's orders separately:&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%2Fnmcmsomssims2cd7f5ds.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%2Fnmcmsomssims2cd7f5ds.PNG" alt=" " width="233" height="170"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, PARTITION BY customer_id creates a separate group for each customer. The ranking then starts again for each customer.This could be useful for answering the question "What is the highest-value order for each customer?"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Understanding ORDER BY&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Inside a window function, ORDER BY determines the order in which the calculation is performed.&lt;br&gt;
For example:&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%2Fw52cat2ystzl7ta7zbge.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%2Fw52cat2ystzl7ta7zbge.PNG" alt=" " width="311" height="63"&gt;&lt;/a&gt;&lt;br&gt;
This means that the rows will be ordered from the highest amount to the lowest amount before the row numbers are assigned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;ROW_NUMBER()&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
This gives each row a unique sequential number&lt;br&gt;
An example is:&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%2F67so964tp7z5qe6h1qk7.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%2F67so964tp7z5qe6h1qk7.PNG" alt=" " width="397" height="110"&gt;&lt;/a&gt;&lt;br&gt;
Even if two orders have the same amount, they will still receive different row numbers.&lt;br&gt;
This can be useful when we need to identify the first, second or third record in a group.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;RANK()&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
This is similar to ROW_NUMBER(), but it handles ties differently. For example&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%2Frclezasnbi0sg6mnd9yy.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%2Frclezasnbi0sg6mnd9yy.PNG" alt=" " width="382" height="113"&gt;&lt;/a&gt;&lt;br&gt;
If two orders have the same amount, they receive the same rank.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
The concepts that I found the most important to understand are OVER(), PARTITION BY and ORDER BY. Once these make sense, functions such as ROW_NUMBER(), RANK() and DENSE_RANK() become much easier to understand.&lt;/p&gt;

&lt;p&gt;For me, the biggest difference between window functions and regular aggregate functions is that window functions allow us to analyze rows in relation to other rows without grouping them into a single row.&lt;/p&gt;

&lt;p&gt;They are especially useful when working with reports, business data, rankings and analytics making them an important concept to learn as you move beyond basic SQL queries.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>learning</category>
      <category>sql</category>
    </item>
    <item>
      <title>SQL Functions: Data Analysis just got better</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:58:11 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/sql-functions-data-analysis-just-got-better-48no</link>
      <guid>https://dev.to/ron-njuguna/sql-functions-data-analysis-just-got-better-48no</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;Introduction&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
When working with databases, we often need to do more than just retrieve data. We may need to calculate an average, count records, find the highest value, convert text to uppercase or work with dates. This is where SQL functions become really useful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;What are SQL Functions&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
SQL functions are built-in operations that allow us to perform calculations and manipulate data directly inside a SQL query. Instead of retrieving all the data and doing the calculations manually, we can let the database do the work for us.&lt;br&gt;
Some common functions are:&lt;br&gt;
&lt;strong&gt;Aggregate functions&lt;/strong&gt;&lt;br&gt;
This can perform calculations on multiple rows and then return a single result. For example&lt;br&gt;
Total amount of orders&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%2Fokfx60008mty56ziudxa.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%2Fokfx60008mty56ziudxa.PNG" alt=" " width="298" height="64"&gt;&lt;/a&gt;&lt;br&gt;
Highest order&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%2Fvea6g1ey1vfli022qhil.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%2Fvea6g1ey1vfli022qhil.PNG" alt=" " width="330" height="49"&gt;&lt;/a&gt;&lt;br&gt;
Count number of orders&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%2Fho3mow3vs62cfs7bn4hh.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%2Fho3mow3vs62cfs7bn4hh.PNG" alt=" " width="348" height="48"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Date Functions&lt;/strong&gt;&lt;br&gt;
This are useful when working with information such as orders, payments or records. An example is&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%2Ff0llfvr95radavkuvefp.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%2Ff0llfvr95radavkuvefp.PNG" alt=" " width="229" height="46"&gt;&lt;/a&gt;&lt;br&gt;
This returns the current date&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt; Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
SQL functions are an important part of working with databases. They help us perform calculations and manipulate information without having to process everything manually.&lt;br&gt;
The key thing I have learned is that SQL is not only about retrieving data. It also provides tools for understanding and transforming that data.&lt;br&gt;
As datasets become larger, knowing how to use functions effectively can make queries shorter, more useful and much easier to analyze.&lt;/p&gt;

</description>
      <category>data</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>SQL Subqueries and CTEs: Writing More Powerful Queries</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Wed, 09 Sep 2026 07:38:12 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/sql-subqueries-and-ctes-writing-more-powerful-queries-499a</link>
      <guid>https://dev.to/ron-njuguna/sql-subqueries-and-ctes-writing-more-powerful-queries-499a</guid>
      <description>&lt;p&gt;As you dive deeper into SQL queries, you'll find that sometimes a straightforward SELECT, WHERE, or JOIN just won't be efficient.&lt;/p&gt;

&lt;p&gt;A good example is you're managing an e-commerce database, and your boss comes to you with a question:&lt;br&gt;
"Can you tell me which customers have spent more than the average customer?"&lt;/p&gt;

&lt;p&gt;Sure, you could work with the numbers manually and produce another query, but SQL has a more efficient way to tackle this. That’s where subqueries and Common Table Expressions come in.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;SubQueries&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
This is a SQL query placed inside another SQL query. The inner query runs first, and its result is then used by the outer query.&lt;br&gt;
An example is this orders table below&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%2Fx34cq22nf685iiojrvon.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%2Fx34cq22nf685iiojrvon.PNG" alt=" " width="233" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we want to find orders that are above the average order value, we can use a subquery:&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%2Fuvcnon5a9yk9382su21u.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%2Fuvcnon5a9yk9382su21u.PNG" alt=" " width="404" height="78"&gt;&lt;/a&gt;&lt;br&gt;
The inner query calculates the average order amount while the outer query returns only orders where the amount is greater than the average.&lt;br&gt;
Subqueries are really useful when the result of one query is needed by another query&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Common Table Expressions&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
This is a temporary named result set that can be referenced within a larger SQL query. An example is:&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%2Faxph94kfxmo5wawerix4.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%2Faxph94kfxmo5wawerix4.PNG" alt=" " width="420" height="158"&gt;&lt;/a&gt;&lt;br&gt;
The CTE first calculates how much each customer has spent. We then query the temporary result shown and find customers who have spent more than 5,000.&lt;br&gt;
&lt;strong&gt;&lt;u&gt;&lt;br&gt;
Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
The main two differences between the two that I would say are first Subqueries are written inside another query while CTEs are defined using WITH&lt;br&gt;
Another difference I'd say is that Subqueries are good for smaller operations while CTEs are good for breaking down complex queries. The most important thing is not simply knowing the syntax but knowing when to use each technique.&lt;/p&gt;

</description>
      <category>backend</category>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>SQL Joins: Understanding How to combine Data from Multiple Tables</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Tue, 08 Sep 2026 09:52:50 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/sql-joins-understanding-how-to-combine-data-from-multiple-tables-2dl7</link>
      <guid>https://dev.to/ron-njuguna/sql-joins-understanding-how-to-combine-data-from-multiple-tables-2dl7</guid>
      <description>&lt;p&gt;When you're diving into databases, you'll quickly notice that data isn't usually crammed into a single table. Take an e-commerce site, for instance, you'd typically find one table for customers, another for orders, a separate one for products and yet another for payments.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;What are SQL Joins&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
A SQL join is a tool that lets you combine rows from two or more tables based on a shared column between them.&lt;br&gt;
For example, suppose we have these two tables:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customers&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%2Firk73fxxemiv62ceze38.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%2Firk73fxxemiv62ceze38.PNG" alt=" " width="173" height="107"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Orders&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%2F15sf1ajqpc2uuaich9xc.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%2F15sf1ajqpc2uuaich9xc.PNG" alt=" " width="225" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The customer_id column connects the two tables. Instead of looking at customers and orders separately, we can use a join to find out who placed each order.&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%2F0zkh68mds8wweri82gga.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%2F0zkh68mds8wweri82gga.PNG" alt=" " width="430" height="88"&gt;&lt;/a&gt;&lt;br&gt;
The result would be:&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%2Fq2hnrxmvdzy2vx4lizjg.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%2Fq2hnrxmvdzy2vx4lizjg.PNG" alt=" " width="191" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Types of SQL Joins&lt;/strong&gt;&lt;/u&gt;&lt;br&gt;
&lt;u&gt;INNER JOIN&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;An INNER JOIN returns only records that have a match in both tables. It should be used when you only want records where a relationship exists.&lt;/p&gt;

&lt;p&gt;For example, if you are generating a report showing customers who have actually placed orders, an INNER JOIN makes sense. Customers who have never placed an order will not appear.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;LEFT JOIN&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;A LEFT JOIN returns all records from the left table, even when there is no matching record in the right table.&lt;/p&gt;

&lt;p&gt;This becomes particularly useful when you want to identify customers who have not placed any orders.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;RIGHT JOIN&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;A RIGHT JOIN works similarly to a LEFT JOIN, except that all records from the right table are returned.&lt;/p&gt;

&lt;p&gt;In practice, RIGHT JOIN is used less frequently because the same result can usually be achieved by reversing the order of the tables and using a LEFT JOIN.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;FULL OUTER JOIN&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;A FULL OUTER JOIN returns all records from both tables. Where a matching record doesn't exist, SQL returns NULL for the missing data.&lt;/p&gt;

&lt;p&gt;This can be useful when comparing two datasets and you want to identify both matching and unmatched records.&lt;/p&gt;

&lt;p&gt;For example, a company could use it to compare customer records from two different systems and find customers that exist in one system but not the other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
SQL joins may seem confusing when you first encounter them, but the basic idea is straightforward which is joins allow us to connect related data stored in different tables.&lt;br&gt;
The key is understanding what information you want in the final result.&lt;br&gt;
Once you understand joins, working with real-world databases becomes much easier. Whether you are building an e-commerce application, analyzing business data or creating reports in tools such as Power BI, joins are a skill you will use constantly.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Building an Interactive Sales Dashboard with Power BI and PostgreSQL</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Fri, 24 Jul 2026 10:08:23 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/building-an-interactive-sales-dashboard-with-power-bi-and-postgresql-2hi5</link>
      <guid>https://dev.to/ron-njuguna/building-an-interactive-sales-dashboard-with-power-bi-and-postgresql-2hi5</guid>
      <description>&lt;p&gt;Data-driven decision-making has become an essential part of modern business operations. In this project, I built an interactive sales dashboard using Power BI and PostgreSQL to analyze vehicle sales data for a car dealership. The goal was to transform raw transactional data into meaningful insights that can help managers monitor performance and make informed business decisions.&lt;/p&gt;

&lt;p&gt;Connecting PostgreSQL to Power BI&lt;/p&gt;

&lt;p&gt;The first step was importing the dataset into a PostgreSQL database. PostgreSQL provided a reliable and structured environment for storing the sales data before connecting it to Power BI. Using Power BI's PostgreSQL connector, I established a connection to the database and imported the required table into Power BI for analysis.&lt;/p&gt;

&lt;p&gt;This approach demonstrates how Power BI can integrate seamlessly with relational databases, making it suitable for handling real-world business datasets.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/zlng0kn2hk2ood37htxu.PNG" rel="noopener noreferrer"&gt;https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/zlng0kn2hk2ood37htxu.PNG&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;Cleaning Data with Power Query&lt;/p&gt;

&lt;p&gt;The imported dataset contained several inconsistencies, including mixed date formats, currency symbols (such as KSh and KES), percentage values, and missing data. These issues had to be resolved before analysis.&lt;/p&gt;

&lt;p&gt;Using Power Query Editor, I:&lt;/p&gt;

&lt;p&gt;Converted inconsistent date formats into valid date values.&lt;br&gt;
Removed currency symbols and thousand separators from numeric fields.&lt;br&gt;
Standardized discount values into decimal percentages.&lt;br&gt;
Replaced invalid or missing values with nulls where appropriate.&lt;br&gt;
Assigned correct data types to every column.&lt;/p&gt;

&lt;p&gt;Cleaning the data ensured that calculations and visualizations were accurate and reliable.&lt;/p&gt;

&lt;p&gt;Creating DAX Measures&lt;/p&gt;

&lt;p&gt;After loading the cleaned data into Power BI, I created several DAX measures to calculate important business metrics. These included:&lt;/p&gt;

&lt;p&gt;Total Revenue&lt;br&gt;
Gross Profit&lt;br&gt;
Gross Profit Margin&lt;br&gt;
Total Units Sold&lt;br&gt;
Total Orders&lt;br&gt;
Average Customer Rating&lt;br&gt;
Average Delivery Days&lt;/p&gt;

&lt;p&gt;These measures allowed the dashboard to dynamically calculate key performance indicators as users interacted with filters and slicers.&lt;/p&gt;

&lt;p&gt;Building the Interactive Dashboard&lt;/p&gt;

&lt;p&gt;The dashboard was designed to provide an executive overview of sales performance through interactive visualizations. It includes KPI cards, revenue trends over time, revenue by vehicle type, car make, branch, customer type, payment method, and sales representative performance. Interactive slicers enable users to filter the dashboard by region, branch, vehicle type, payment status, and order date, making it easy to explore different aspects of the business.&lt;/p&gt;

&lt;p&gt;Key Takeaways&lt;/p&gt;

&lt;p&gt;This project strengthened my understanding of integrating PostgreSQL with Power BI, performing data transformation using Power Query, and developing reusable DAX measures for business reporting. Most importantly, it demonstrated how interactive dashboards can transform raw data into actionable insights that support strategic decision-making. Power BI's combination of data preparation, modeling, and visualization makes it a powerful tool for business intelligence and analytics.  &lt;/p&gt;

</description>
      <category>analytics</category>
      <category>data</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>HOW EXCEL IS USED IN REAL WORLD DATA ANALYSIS</title>
      <dc:creator>Ron Njuguna</dc:creator>
      <pubDate>Sat, 06 Jun 2026 18:43:46 +0000</pubDate>
      <link>https://dev.to/ron-njuguna/how-excel-is-used-in-real-world-data-analysis-34ng</link>
      <guid>https://dev.to/ron-njuguna/how-excel-is-used-in-real-world-data-analysis-34ng</guid>
      <description>&lt;p&gt;Microsoft Excel is used as a tool for organizing, analyzing and presenting information. This spreadsheet application, made by Microsoft, helps users to efficiently collect, calculate, analyze and visualize data. Whether you're in business, education, finance or marketing, Excel  can be used in transforming raw data into valuable data that helps in decision-making.&lt;/p&gt;

&lt;p&gt;A good example of Excel's real-world application is in business decision making. Companies gather a lot of sales, customer and operational data. With Excel's sorting and filtering capabilities, managers can get information, spot trends and focus on specific data sets. For instance, a sales manager might filter sales records to see only transactions from a certain region or sort products by the revenue they generate.&lt;/p&gt;

&lt;p&gt;Another key use of Excel is in financial reporting and budgeting. Businesses rely on it to get numbers related to expenses, revenues, profits and taxes. Due to its formulas and functions, these calculations are both accurate and efficient. Functions like SUM() can quickly tally total sales, while AVERAGE() helps determine average monthly expenses. These calculations enable organizations to keep a close eye on their financial health and make well-informed decisions.&lt;/p&gt;

&lt;p&gt;Excel has become an excellent tool for analyzing marketing performance. Marketing teams analyze campaign results, customer feedback and sales conversions to monitor effectiveness. With features like Conditional Formatting, they can easily spot key trends, whether it’s campaigns that  succeed or those that fail. This allows analysts to quickly recognize patterns and improve strategies for better outcomes in future marketing efforts.&lt;/p&gt;

&lt;p&gt;Some of the Excel functions and features that I have learned include SUM(), AVERAGE() and TRIM(). The SUM() function is great for tallying up figures like total sales revenue, while AVERAGE() helps me figure out average performance metrics, such as student grades or monthly sales figures. TRIM() is used for data cleaning, as it removes extra spaces in text entries, making everything more consistent and reliable.&lt;/p&gt;

&lt;p&gt;Excel has taught me how simple tools like formulas, sorting, filtering and formatting can turn raw data into meaningful information that helps in making better decisions. As I keep learning Excel, I’m confident it will become a crucial skill for my academic and professional journey.&lt;/p&gt;

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