Data Analysis with SQL
Tags: sql, datascience, programming, machinelearning
Published: 2023-09-29 04:52:46

<img src="https://assets.rbl.ms/31141774/origin.jpg" align="left" />

In this project, we will analyze data for a telecom company called Techconnect. At the end of this project, you will have a fair understanding of how to approach data analysis when working with a large database.
<h4>Why Use SQL?</h4>
Before we dive into the project, let's briefly discuss why we use SQL for data analysis. While Python is a reliable tool for most data analysis tasks, it can encounter inefficiencies when dealing with large datasets containing millions of rows. This is where SQL shines. SQL was designed to analyze massive amounts of data efficiently, allowing us to get insights from large databases in seconds.
<h4>The database</h4>
We will use Microsoft SQL Server to run all our SQL code for this project. Connect to SQL Server using the following information:
<ul>
 	<li><strong>Server Name: </strong><a href="http://dap-projects-database.database.windows.net" target="_blank" rel="noopener noreferrer nofollow">dap-projects-database.database.windows.net</a></li>
 	<li><strong>Username: </strong>hackathon</li>
 	<li><strong>Password: ---------------------</strong></li>
 	<li><strong>Database Name: </strong>dapDB</li>
</ul>
You will find a dapDB database with 3 tables named <strong>customers</strong>, <strong>location</strong>, and <strong>current_offer_balance</strong>.
<h4>Case Study</h4>
Let me introduce you to TechConnect, a mobile services provider offering voice, data, SMS, and various value-added services to its vast customer base. To stay competitive, TechConnect relies on data-driven decision-making and customer-centric strategies. Our task as data analysts is to transform raw data into actionable insights that will shape the company's decisions, product offerings, and marketing campaigns.
<h4>Dataset Description</h4>
<ul>
 	<li>Table: dbo.current_officers_balance</li>
</ul>
The "current_officers_balance" table was the backbone of TechConnect's data infrastructure. It stored detailed information about each customer's account and usage patterns. The table held records of customer IDs, call durations, data consumption, messaging activities, revenue details, and various other metrics. This data allowed TechConnect to gain insights into customer behavior, identify potential upselling opportunities, and provide personalized services.
<ul>
 	<li>Table: dbo.customers</li>
</ul>
The "customers" table contained a comprehensive list of all TechConnect's customers. It included activation dates, tenure information, and each customer's spending habits. This data helped the company understand the customer lifecycle, and loyalty trends and tailor marketing strategies based on customer preferences and behavior.
<ul>
 	<li>Table: dbo.location</li>
</ul>
The "location" table held vital information about the geographical distribution of customers and the network infrastructure. It stored site IDs, regions, and cell types associated with specific cellular towers and base stations.

This data will enable TechConnect to optimize network coverage, identify potential network expansion areas, and assess regional performance.

TechConnect's data analysts and business intelligence teams (You

<img title="winking face" src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f609.png?version=8.0.0" alt="winking face" align="left" />

) will work diligently to transform raw data into actionable insights. The insights generated from the database will play a pivotal role in shaping the company's decisions, product offerings, and marketing campaigns.
<h4>Data Analysis</h4>
The company is still in its early stages, so even though we are making money and we have achieved product-market-fit (creating a product or service that people are willing to pay for), we must ask important questions that will ensure that the company stays afloat.

The most important question we must answer is Why people pay for our services? What exactly are they paying for, and who are our customers? To reduce costs and make more money, we must pinpoint exactly what our customers need most. This is the goal of any business analysis. Let's dive into it!
<h4>Questions</h4>
<h6>Customer spending behavior</h6>
<strong>1.0 How do customers spend money on different services such as voice, data, SMS, and other offerings? Identify the most popular services among customers.</strong>
<pre><code class="language-basic">SELECT

    'Voice' AS Service,

    SUM(VOICE_SPENT) AS TotalSpent

FROM

    dbo.customers

UNION ALL

SELECT

    'Data' AS Service,

    SUM(DATA_SPENT) AS TotalSpent

FROM

    dbo.customers

UNION ALL

SELECT

    'SMS' AS Service,

    SUM(SMS_SPENT) AS TotalSpent

FROM

    dbo.customers

UNION ALL

SELECT

    'Other Services' AS Service,

    SUM(OTHER_SPENT) AS TotalSpent

FROM

    dbo.customers

ORDER BY TotalSpent DESC;

</code></pre>
<strong>1.1 Result</strong>

Voice is the most popular service that our customers spend money on. This means our customers mostly make calls, send text messages, and buy data.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690800814376_image.png" align="left" />

Result of the query

<strong>You only have read permissions; however, right-click on the results to save the results as a CSV file for your visualizations.</strong>

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690801010136_image.png" align="left" />

Column chart of spending Vs service

Since voice is the most popular service, lets take a closer look at the customers that make calls.

<strong>2.0 What is the device_type of customers that spend money to make calls?</strong>
<pre><code class="language-basic"> --Voice Spending Variation Based on Customer's Device Type


-- Query to get voice spending for smartphone and non-smartphone users

SELECT 

    CASE WHEN dbo.location.cell_type = 2 THEN 'Smartphone' --assuming 2 is smartphone

                 WHEN dbo.location.cell_type = 3 THEN 'Non-Smartphone'

                 ELSE 'Other-Devices' --null values as other-devices

                 END AS device_type,

    SUM(VOICE_SPENT) AS sum_voice_spent

        --AVG(VOICE_SPENT) AS average_voice_spent we can't use mean cuz of outliers

FROM dbo.customers

LEFT JOIN dbo.location 

ON dbo.customers.Cell_ID = dbo.location.CELL_ID

GROUP BY dbo.location.cell_type;</code></pre>
<strong>2.1 Result</strong>

Majority of our voice customers are smartphone users.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690801899882_image.png" align="left" />

Result of the query

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690802153801_image.png" align="left" />

Column chart of Voice_spent Vs Device_type

<strong>3.0 Top recharge method used by customers</strong>
<pre><code class="language-basic">--top recharge method used by customers

SELECT 

       SUM(RECHARGE_EVD_AMOUNT) AS evd,

       SUM(RECHARGE_MOMO_AMOUNT) AS momo,

       SUM(RECHARGE_CARD_AMOUNT) AS recharge_card

FROM dbo.customers;</code></pre>
<strong>3.1 Result</strong>

Most customers use recharge card as their recharge method

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690804128234_image.png" align="left" />

<strong>4.0 Can existing customers be upsold to higher-value data plans? </strong>
<pre><code class="language-basic">SELECT TOP 10

    Customer_ID,

    SUM(Data_Vol_MB) AS Total_Data_MB,

    SUM(TOTAL_RECHARGE_AMOUNT) AS TOTAL_RECHARGE_AMOUNT

FROM dbo.customers

GROUP BY Customer_ID

HAVING SUM(Data_Vol_MB) = 0

ORDER BY TOTAL_RECHARGE_AMOUNT DESC;</code></pre>
<strong>4.1 Result</strong>

Yes, some customers have high recharge amount but no data at all, so they can be convinced to buy data.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690905679619_image.png" align="left" />

It's good to know what customers want, but where exactly is the money coming from

<img title="thinking face" src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f914.png?version=8.0.0" alt="thinking face" align="left" />

Now let's look at the MONEY.

<img title="money-mouth face" src="https://paper.dropboxstatic.com/static/img/ace/emoji/1f911.png?version=8.0.0" alt="money-mouth face" align="left" />
<h2>Main sources of revenue</h2>
<strong>1.0 Who are our best customers?</strong>
<pre><code class="language-basic">--Top 5 customers by total revenue:

SELECT TOP 5

    cob.Customer_ID AS top_customers_by_revenue,

    SUM(cob.tot_rev) AS total_revenue,

        SUM(cust.VOICE_SPENT + cust.DATA_SPENT + cust.SMS_SPENT + cust.OTHER_SPENT) AS total_spending

FROM dbo.current_offers_balance AS cob

JOIN dbo.customers cust ON cob.Customer_ID = cust.Customer_ID

GROUP BY cob.Customer_ID

ORDER BY total_revenue DESC;


--Top 5 customers by spending

SELECT TOP 5

    cob.Customer_ID AS top_customers_by_spending,

    SUM(cob.tot_rev) AS total_revenue,

    SUM(cust.VOICE_SPENT + cust.DATA_SPENT + cust.SMS_SPENT + cust.OTHER_SPENT) AS total_spending

FROM dbo.current_offers_balance AS cob

JOIN dbo.customers cust ON cob.Customer_ID = cust.Customer_ID

GROUP BY cob.Customer_ID

ORDER BY total_spending DESC;</code></pre>
<strong>1.1 Result</strong>

From the tables below, our top spenders don’t make us the most money, but customers who make us the most (total_revenue) may not be the best spenders. This goes to show that revenue does not correlate with spending.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690804850211_image.png" align="left" />

top customers by revenue and spending

<strong>2.0 What are the main sources of revenue for the company?</strong>
<pre><code class="language-basic">--Revenue breakdown by revenue types

SELECT

    SUM(cob.rev_data_total) AS data_revenue,

    SUM(cob.rev_voice_int) AS voice_revenue,

    SUM(cob.rev_other_vas) AS vas_revenue,

    SUM(cob.rev_rentals) AS rentals_revenue

FROM dbo.current_offers_balance cob;</code></pre>
<strong>2.1 Result</strong>

Voice is the major revenue source of the company. However, we are losing a lot of money from rentals. This means our customers borrow data, voice, and value-added services from us; this borrowing of services is causing us to lose potential revenue.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690806251053_image.png" align="left" />

<strong>3.0 Do we make more money from incoming calls and texts sent to our customers, or otherwise?</strong>
<pre><code class="language-basic">--percentage of total revenue from services coming in Vs out

SELECT

        (SUM(tot_rev_in) / SUM(tot_rev)) * 100 AS total_rev_in_percentage,

        (SUM(tot_rev_out) / SUM(tot_rev)) * 100 AS total_rev_out_percentage

FROM dbo.current_offers_balance;</code></pre>
<strong>3.1 Result</strong>

We make more money from outgoing services when our customers send text messages to outside networks or when our customers make calls to other networks.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690808573921_image.png" align="left" />

<strong>4.0 How much money have we lost from customers who left (churned).</strong>
<pre><code class="language-basic">-- Calculate total revenue for each distinct value of status (pie chart)

SELECT

    'ACTIVE' AS status, SUM(tot_rev) AS tot_rev

FROM dbo.current_offers_balance

WHERE status = 'ACTIVE'
UNION ALL
SELECT

    'DORMANT &amp; INACTIVE' AS status, SUM(tot_rev) AS tot_rev

FROM dbo.current_offers_balance

WHERE status IN ('DORMANT', 'INACTIVE')


UNION ALL


SELECT

    'CHURNED' AS status, SUM(tot_rev) AS tot_rev

FROM dbo.current_offers_balance

WHERE status IN ('CHURNED', 'CHURN');</code></pre>
<strong>4.1 Result</strong>

From the table below, it appears that we didn’t make much money from customers who left or churned; compared to revenue from our active customers.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690811913336_image.png" align="left" />

<strong>5.0 Do we make more money from international services and transactions?</strong>
<pre><code class="language-basic">--international vs domestic voice revenue

SELECT

    SUM(rev_voice_int) + SUM(rev_voice_roam_incoming) + SUM(rev_voice_roam_outgoing) AS total_international_revenue,

    SUM(tot_rev) - (SUM(rev_voice_int) + SUM(rev_voice_roam_incoming) + SUM(rev_voice_roam_outgoing)) AS total_domestic_revenue

FROM dbo.current_offers_balance;</code></pre>
<strong>5.1 Result</strong>

No, we make more money locally.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690813283095_image.png" align="left" />

<strong>6.0 Which handset models bring more revenue?</strong>
<pre><code class="language-basic">-- Calculate total revenue for each distinct value of hs_model

SELECT TOP 5 hs_model, SUM(tot_rev) AS total_revenue

FROM dbo.current_offers_balance

GROUP BY hs_model

ORDER BY SUM(tot_rev) DESC;</code></pre>
<strong>6.1 Result</strong>

We make the most money from android smartphone users.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690815183689_image.png" align="left" />
<h2>Revenue and customer engagement performance across different regions.</h2>
<strong>1.0 Compare customers' spending patterns in different regions and identify which services are more popular in each region.</strong>
<pre><code class="language-basic">--Compare the spending patterns of customers in different regions and

-- Identify which services are more popular in each region

SELECT TOP 5

    loc.region,

    SUM(cust.VOICE_SPENT) AS total_voice_spent,

    SUM(cust.DATA_SPENT) AS total_data_spent,

    SUM(cust.SMS_SPENT) AS total_sms_spent,

    CASE

        WHEN SUM(cust.VOICE_SPENT) &gt; SUM(cust.DATA_SPENT)

            AND SUM(cust.VOICE_SPENT) &gt; SUM(cust.SMS_SPENT)

            AND SUM(cust.VOICE_SPENT) &gt; SUM(cust.OTHER_SPENT) THEN 'Voice'

        WHEN SUM(cust.DATA_SPENT) &gt; SUM(cust.VOICE_SPENT)

            AND SUM(cust.DATA_SPENT) &gt; SUM(cust.SMS_SPENT)

            AND SUM(cust.DATA_SPENT) &gt; SUM(cust.OTHER_SPENT) THEN 'Data'

        WHEN SUM(cust.SMS_SPENT) &gt; SUM(cust.VOICE_SPENT)

            AND SUM(cust.SMS_SPENT) &gt; SUM(cust.DATA_SPENT)

            AND SUM(cust.SMS_SPENT) &gt; SUM(cust.OTHER_SPENT) THEN 'SMS'

        ELSE 'Other'

    END AS popular_service

FROM

    dbo.customers AS cust

JOIN

    dbo.location AS loc ON cust.Cell_ID = loc.CELL_ID

GROUP BY

    loc.region

ORDER BY

        total_voice_spent DESC; --we order by voice since voice is the most popular service across all regions;</code></pre>
<strong>1.1 Result</strong>

The top regions are the “Greater Accra Region” and the “Ashanti Region” by spending. Voice is the most popular service for all regions.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690817725718_image.png" align="left" />

Spending rate might not determine revenue, meaning we might make more money from regions where customers spent less. So, let us look at regional revenue.

<strong>2.0 What are the most profitable regions?</strong>
<pre><code class="language-basic">--Compare the total_revenue of customers in different regions

SELECT TOP 5

        l.region AS Region, 

        SUM(cob.tot_rev) AS Total_Revenue

FROM dbo.current_offers_balance cob

JOIN dbo.customers cu ON cu.Customer_ID = cob.Customer_ID

JOIN dbo.location l ON cu.Cell_ID = l.CELL_ID

GROUP BY l.region

ORDER BY Total_Revenue DESC;</code></pre>
<strong>2.1 Result</strong>

The top regions are the “Greater Accra Region” and the “Western Region” by revenue.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690821260388_image.png" align="left" />
<h2>Analyze customer churn</h2>
<strong>1.0 Which regions have the highest churn rate?</strong>
<pre><code class="language-basic">--Actionable insight: Use insights from high revenue regions to create personalized offerings and improve customer experiences in other regions.

--regions with the highest churn rate

--The Volta Region has the highest churn rate but 3rd highest revenue

SELECT TOP 5

           l.region,

       AVG(c.tenure) AS avg_tenure,

       SUM(CASE WHEN co.churn_date IS NOT NULL THEN 1 ELSE 0 END) * 100.0 / COUNT(c.customer_id) AS churn_rate_percentage --if there is a date for churn, then true or 1

FROM dbo.location l

LEFT JOIN dbo.customers c ON l.cell_id = c.cell_id

LEFT JOIN dbo.current_offers_balance co ON c.customer_id = co.customer_id

GROUP BY l.region

ORDER BY churn_rate_percentage DESC;</code></pre>
<strong>1.1 Result</strong>

The Volta Region has the highest churn rate but brings the 3rd highest revenue.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690822551499_image.png" align="left" />

<strong>2.0 Evaluate the effectiveness of the loyalty program. How customers engage with it.</strong>

The loyalty program was implemented to encourage our active customers to stay with us and continue to pay for our services.
<pre><code class="language-basic">SELECT DISTINCT loyalty_points_balance

FROM dbo.current_offers_balance;

SELECT DISTINCT loyalty_points_redeemed

FROM dbo.current_offers_balance;

SELECT DISTINCT loyalty_points_earned

FROM dbo.current_offers_balance;</code></pre>
<strong>2.1 Result</strong>

It's time to try something other than loyalty points because customers have not responded. Either that or it was recently introduced and needs some time to kick off.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690845049892_image.png" align="left" />
<h4>Track customers' adoption of different mobile network technologies (2G).</h4>
<strong>1.0 Compare the revenue from customers on 2G networks to those from others.</strong>
<pre><code class="language-basic">SELECT '2G' AS nw_2g_ind, SUM(tot_rev) AS Total_Revenue 

FROM dbo.current_offers_balance WHERE nw_2g_ind = -1

UNION ALL

SELECT '3G' AS nw_2g_ind, SUM(tot_rev) AS Total_Revenue 

FROM dbo.current_offers_balance WHERE nw_2g_ind = 0

UNION ALL

SELECT '4G' AS nw_2g_ind, SUM(tot_rev) AS Total_Revenue 

FROM dbo.current_offers_balance WHERE nw_2g_ind = 1;</code></pre>
<strong>1.1 Result</strong>

We should advertise to those using 2G network to upgrade to 3G or 4G.

<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690890809927_image.png" align="left" />
<h4>Conclusion</h4>
After queries have been written and beautiful dashboards have been built, the single most important thing a data analyst has to give is <strong><em>actionable</em></strong> insights. So from our analysis, here are some things I recommend:
<ul>
 	<li><strong><em>Focus on Voice Services</em></strong><em>: Voice is the most popular service among customers, so it is essential to maintain and improve the voice service quality. Additionally, consider introducing voice-based value-added services to engage customers further.</em></li>
</ul>
<ul>
 	<li><strong><em>Target Smartphone Users</em></strong><em>: the majority of voice customers are smartphone users. This presents an opportunity to create smartphone-specific offers, promotions, and services to cater to this segment.</em></li>
</ul>
<ul>
 	<li><strong><em>Promote Data Plans to High-Recharge Customers</em></strong><em>: Identify customers with high recharge amounts but do not use data. Target these customers with personalized offers to upsell higher-value data plans.</em></li>
</ul>
<ul>
 	<li><strong><em>Optimize Recharge Methods</em></strong><em>: As most customers use recharge cards, consider promoting mobile money and electronic voucher distribution (EVD) methods to increase convenience and accessibility.</em></li>
</ul>
<ul>
 	<li><strong><em>Address Churn Rate in Volta Region</em></strong><em>: The Volta Region has the highest churn rate despite being a high-revenue region. Investigate the reasons behind the churn and implement strategies to improve customer retention in this area.</em></li>
</ul>
<ul>
 	<li><strong><em>Reduce Losses from Rentals</em></strong><em>: Analyze the rental services and identify ways to reduce losses from customers borrowing services. Encourage customers to opt for regular data and voice plans instead of rentals.</em></li>
 	<li><strong><em>Upgrade 2G Customers</em></strong><em><em>: Encourage customers on 2G networks to upgrade to 3G or 4G to capitalize on the revenue potential from these advanced services.</em></em>&nbsp;</li>
</ul>
If you want to become a programmer, then this <a class="attrlink" href="https://blog.learnhub.africa/2023/09/12/how-to-learn-programming-in-2023/" target="_blank" rel="noopener noreferrer nofollow">article</a> is your guide to becoming one. It explains everything from start to finish on how to build technical skills and what to do.

If you find this post exciting, find more exciting posts on <a class="attrlink" href="http://blog.learnhub.africa/" target="_blank" rel="noopener noreferrer nofollow">Learnhub Blog</a>; we write everything tech from <a class="attrlink" href="https://blog.learnhub.africa/category/cloud-computing/" target="_blank" rel="noopener noreferrer nofollow">Cloud computing</a> to <a class="attrlink" href="https://blog.learnhub.africa/category/frontend/" target="_blank" rel="noopener noreferrer nofollow">Frontend Dev</a>, <a class="attrlink" href="https://blog.learnhub.africa/category/security/" target="_blank" rel="noopener noreferrer nofollow">Cybersecurity</a>, <a class="attrlink" href="https://blog.learnhub.africa/category/data-science/" target="_blank" rel="noopener noreferrer nofollow">AI</a>, and <a class="attrlink" href="https://blog.learnhub.africa/category/blockchain/" target="_blank" rel="noopener noreferrer nofollow">Blockchain</a>.

<em> </em>
<h2><a class="attrlink" href="https://app.powerbi.com/view?r=eyJrIjoiYjAzNGYxMGMtNTY3Mi00Y2I4LTlhYTYtMTkzNGRlZThjZGI0IiwidCI6ImI4MGJiZGQ4LWFlM2UtNDY1Yy1hNDcwLWMwODgyYTUxYWViNyIsImMiOjh9" target="_blank" rel="noopener noreferrer nofollow">Dashboard</a></h2>
<img src="https://paper-attachments.dropboxusercontent.com/s_F4F6DBB24B644CD4CDCAB0AB1595055B51F16902764960AF9034E891578F3388_1690959363473_ezgif.com-optimize.gif" align="left" />
<h4>Resources</h4>
<ul>
 	<li><a class="attrlink" href="https://youtu.be/HXV3zeQKqGY" target="_blank" rel="noopener noreferrer nofollow">SQL Tutorial - Full Database Course for Beginners</a></li>
 	<li><a class="attrlink" href="https://youtube.com/shorts/DWte9zjGl0I?feature=share" target="_blank" rel="noopener noreferrer nofollow">Why learn SQL if you can use Python?</a></li>
 	<li><a class="attrlink" href="https://www.hackerrank.com/domains/sql?filters%5Bstatus%5D%5B%5D=unsolved&amp;badge_type=sql" target="_blank" rel="noopener noreferrer nofollow">Practice SQL on HackerRank</a></li>
 	<li><a class="attrlink" href="https://youtu.be/KPc6950u0TE" target="_blank" rel="noopener noreferrer nofollow">Introduction to Power BI </a></li>
 	<li><a class="attrlink" href="https://www.microsoft.com/en-us/sql-server/sql-server-downloads" target="_blank" rel="noopener noreferrer nofollow">Installing Microsoft SQL Server</a></li>
</ul>