SQL Analysis and Tableau Vizualization of digital products

About the company: The company creates and sells digital products on a designated marketplace. They have 14 products in their portfolio. The marketplace withdraws fees for each sale. Also, taxes are collected depending on the customer's country of origin. So the author receives only a specific amount from the product price. The marketplace doesn't provide in-depth sales statistics.

Objective: To analyze sales and identify purchasing trends among the customers.

Applied skills: Excel SQL SQLite Tableau

Stakeholder questions:

  1. What were the total number of orders, revenue, profit, profit margin, and return rate for 2023?
  2. Which countries have the most customers?
  3. Which products are the top sellers?
  4. Which products generate the most profit?
  5. What is the return rate for each product?

Answers

What were the total number of orders, revenue, profit, profit margin, and return rate for 2023?

In 2023, the company processed 804 orders, generating total revenue of $27,650.92. Net profit, after accounting for all fees, was $18,849.00, representing 68.17% of total revenue. The return rate across all products was 3.87%.

SQL query
              
    SELECT COUNT (DISTINCT order_id) AS number_of_orders, round (sum (Price),2) AS revenue, round (sum (amount) ,2) AS profit, round (sum (amount) /sum(Price) * 100.0,2) || '%' AS profit_margin,
    round (100.0 * COUNT (DISTINCT IIF(Type = 'Sale Refund' OR Type =
    'Sale Reversal', order_id, NULL)) / NULLIF (COUNT (DISTINCT IIF (Type =
    'Sale', order_id, NULL)), 0), 2) || '%' AS return_rate FROM crumina_statement_2023 WHERE type != 'Payout'
              
            

Which countries have the most customers?

Countries with the most customers orders by the highest profit rate:

  1. United States - 26.78%
  2. India - 8.97%
  3. United Kingdom - 5.86%
  4. Germany - 4.25%
  5. Canada - 4.25%
  6. France - 4.02%
SQL query
              
    WITH profit_by_country AS (SELECT Other_Party_Country AS Country, round (sum (Amount),2) AS profit, 
    COUNT(iif(Type NOT IN ('Author Fee Refund', 'Sale Refund', 'Sale Reversal', 'Author Fee Reversal' ), Order_ID, NULL))/4 AS number_of_orders FROM crumina_statement_2023
    WHERE Item_ID IS NOT null 
    GROUP BY Other_Party_Country 
    ORDER BY profit DESC) 
      
    SELECT country, profit, round(profit/ (SELECT sum (Amount) FROM crumina_statement_2023 WHERE Type != 'Payout') * 100, 2) || '%' AS profit_rate FROM profit_by_country
    
            

Which products are the top sellers?

Products that generated the most profit are:

  1. Olympus WordPress
  2. Seosight WordPress
  3. Polo WordPress
SQL Query
              
    SELECT CASE 
      WHEN Item_ID = 16078535' THEN 'Polo WordPress' 
      WHEN Item_ID = 38048804' THEN 'Cryptoki React' 
      WHEN Item_ID = '34741893' THEN 'Cryptoki HTML' 
      WHEN Item_ID = '19245326' THEN 'Seosight WordPress' 
      WHEN Item_ID = '20418396' THEN 'Utouch HTML' 
      WHEN Item_ ID = 13850909' THEN 'Omni WordPress' 
      WHEN Item_ID = '22069917' THEN "WoOX HTML' 
      WHEN Item_ID = '17353995' THEN 'Seosight HTML' 
      WHEN Item_ID = '16964965' THEN 'Modesto WordPress' 
      WHEN Item_ID = '22788499' THEN 'Olympus WordPress' 
      WHEN Item_ID = '23231681' THEN 'Puzzler HTML' 
      WHEN Item_ID = '24765590' THEN 'HostSite HTML WHMCS'
      WHEN Item_ID = '26148134' THEN 'TopTen HTML' 
      WHEN Item_ID = '20654547' THEN 'Utouch WordPress' 
      WHEN Item_ID = 18533327' THEN 'Osvald HTML' 
      WHEN Item_ID = '22832072' THEN 'Woox Crypto HTML' 
      WHEN Item_ID = 19755363' THEN 'Olympus HTML' 
      ELSE 'Not an Item' 
      END AS Item_Name, 
      round (sum (Amount),2) AS profit, 
      COUNT(iif (Type NOT IN ('Author Fee Refund', 'Sale Refund', 'Sale Reversal', 'Author Fee Reversal' ), Order_ID, NULL))/4 AS number_of_orders FROM crumina_statement_2023
    ORDER BY profit DESC
    WHERE Item_ID IS NOT null 
    GROUP BY Item_ID
              
            

Which products generate the most profit?

The most profit is generated by the next products:

  1. Olympus WordPress - $7,861.46 (41.71%)
  2. Seosight WordPress - $4,382.58 (23.25%)
  3. Polo WordPress - $1,918.67 (10.18%)
SQL Query
              
    WITH
    profit_by_product AS (SELECT CASE 
      WHEN Item_ID = 16078535' THEN 'Polo WordPress' 
      WHEN Item_ID = 38048804' THEN 'Cryptoki React' 
      WHEN Item_ID = '34741893' THEN 'Cryptoki HTML' 
      WHEN Item_ID = '19245326' THEN 'Seosight WordPress' 
      WHEN Item_ID = '20418396' THEN 'Utouch HTML' 
      WHEN Item_ ID = 13850909' THEN 'Omni WordPress' 
      WHEN Item_ID = '22069917' THEN "WoOX HTML' 
      WHEN Item_ID = '17353995' THEN 'Seosight HTML' 
      WHEN Item_ID = '16964965' THEN 'Modesto WordPress' 
      WHEN Item_ID = '22788499' THEN 'Olympus WordPress' 
      WHEN Item_ID = '23231681' THEN 'Puzzler HTML' 
      WHEN Item_ID = '24765590' THEN 'HostSite HTML WHMCS'
      WHEN Item_ID = '26148134' THEN 'TopTen HTML' 
      WHEN Item_ID = '20654547' THEN 'Utouch WordPress' 
      WHEN Item_ID = 18533327' THEN 'Osvald HTML' 
      WHEN Item_ID = '22832072' THEN 'Woox Crypto HTML' 
      WHEN Item_ID = 19755363' THEN 'Olympus HTML' 
      ELSE 'Not an Item' 
      END AS Item_Name, 
      round (sum (Amount), 2) AS profit, 
      COUNT (iif (Type NOT IN ('Author Fee Refund', 'Sale Refund', Reversal', 'Author Fee Reversal' ), Order_ID, NULL))/4 AS number_of_orders FROM crumina_statement_2023 
      WHERE Item_ID IS NOT null 
      GROUP BY Item_ID ORDER BY profit DESC) 
      
      SELECT Item_Name, profit, round(profit/(SELECT sum (Amount) FROM crumina_statement_2023 WHERE Type != 'Payout') * 100, 2) || '%' AS profit_rate FROM profit_by_product
              
            

What is the return rate for each product?

The highest return rate is observed mostly among the HTML products. The overall return rate looks as follows:

  1. Puzzler HTML - 20.00%
  2. Cryptoki HTML - 12.50%
  3. Seosight HTML - 8.97%
  4. Cryptoki React - 7.69%
  5. HostSite HTML - 6.67%
  6. Olympus WordPress - 5.68%
  7. TopTen HTML - 4.17%
  8. Olympus HTML - 4.05%
  9. Polo WordPress - 1.67%
  10. Seosight WordPress - 1.03%
SQL Query
              
    WITH
    profit_by_product AS (SELECT CASE 
      WHEN Item_ID = 16078535' THEN 'Polo WordPress' 
      WHEN Item_ID = 38048804' THEN 'Cryptoki React' 
      WHEN Item_ID = '34741893' THEN 'Cryptoki HTML' 
      WHEN Item_ID = '19245326' THEN 'Seosight WordPress' 
      WHEN Item_ID = '20418396' THEN 'Utouch HTML' 
      WHEN Item_ ID = 13850909' THEN 'Omni WordPress' 
      WHEN Item_ID = '22069917' THEN "WoOX HTML' 
      WHEN Item_ID = '17353995' THEN 'Seosight HTML' 
      WHEN Item_ID = '16964965' THEN 'Modesto WordPress' 
      WHEN Item_ID = '22788499' THEN 'Olympus WordPress' 
      WHEN Item_ID = '23231681' THEN 'Puzzler HTML' 
      WHEN Item_ID = '24765590' THEN 'HostSite HTML WHMCS'
      WHEN Item_ID = '26148134' THEN 'TopTen HTML' 
      WHEN Item_ID = '20654547' THEN 'Utouch WordPress' 
      WHEN Item_ID = 18533327' THEN 'Osvald HTML' 
      WHEN Item_ID = '22832072' THEN 'Woox Crypto HTML' 
      WHEN Item_ID = 19755363' THEN 'Olympus HTML' 
      ELSE 'Not an Item' 
      END AS Item_Name, 
      round (100.0 * (COUNT(DISTINCT IIF(Type = 'Sale Refund' OR Type = 'Sale Reversal', order_id, NULL))) / NULLIF(COUNT (DISTINCT IIF(Type = 'Sale', order_id, NULL)), 0), 2) || '%' AS return_rate FROM crumina_statement_2023 
  WHERE Item_ID IS NOT NULL 
  GROUP BY Item_Name 
  ORDER BY CAST (return_rate AS REAL) DESC