Skip to content
New Workbook
Sign up
Project: Analyzing Motorcycle Part Sales

You're working for a company that sells motorcycle parts, and they've asked for some help in analyzing their sales data!

They operate three warehouses in the area, selling both retail and wholesale. They offer a variety of parts and accept credit cards, cash, and bank transfer as payment methods. However, each payment type incurs a different fee.

The board of directors wants to gain a better understanding of wholesale revenue by product line, and how this varies month-to-month and across warehouses. You have been tasked with calculating net revenue for each product line and grouping results by month and warehouse. The results should be filtered so that only "Wholesale" orders are included.

They have provided you with access to their database, which contains the following table called sales:

Sales

ColumnData typeDescription
order_numberVARCHARUnique order number.
dateDATEDate of the order, from June to August 2021.
warehouseVARCHARThe warehouse that the order was made from— North, Central, or West.
client_typeVARCHARWhether the order was Retail or Wholesale.
product_lineVARCHARType of product ordered.
quantityINTNumber of products ordered.
unit_priceFLOATPrice per product (dollars).
totalFLOATTotal price of the order (dollars).
paymentVARCHARPayment method—Credit card, Transfer, or Cash.
payment_feeFLOATPercentage of total charged as a result of the payment method.

Your query output should be presented in the following format:

product_linemonthwarehousenet_revenue
product_one---------
product_one---------
product_one---------
product_one---------
product_one---------
product_one---------
product_two---------
............
Spinner
DataFrameavailable as
revenue_by_product_line
variable
-- Choose the columns product_line, the month from date, displayed as 'June', 'July', and 'August', the warehouse, and net_revenue

SELECT
product_line,
CASE 
    WHEN DATE_PART('month', date) = 6 THEN 'June'
    WHEN DATE_PART('month', date) = 7 THEN 'July'
    WHEN DATE_PART('month', date) = 8 THEN 'August'
END AS month,
warehouse,
-- net_revenue is calculated by getting the sum of total and multiplying by 1 - payment_fee, rounding to two decimal places.
ROUND(SUM(CASE WHEN client_type = 'Wholesale' 
		  THEN total*(1-payment_fee) END)::numeric, 2) AS net_revenue
FROM sales
--You will need to filter client_type so that only 'Wholesale' orders are returned
WHERE client_type = 'Wholesale'
-- The results should first be sorted by product_line and month in ascending order, then by net_revenue in descending order
GROUP BY product_line, month, warehouse
ORDER BY product_line ASC, month ASC, net_revenue DESC