cswork / libraryOpen practice workspace

Coding questions · MathWorks

Calculate cost from orders with SQL

This question evaluates a candidate's ability to perform SQL data manipulation and business-rule calculations, including conditional joins, date-range filtering, and numeric arithmetic for discounts and taxes.

You have two tables: orders(order_id INT, user_id INT, order_date DATE, quantity INT, unit_price DECIMAL, coupon_code VARCHAR) and coupons(code VARCHAR, discount_pct DECIMAL, max_discount DECIMAL, valid_from DATE, valid_to DATE). For each order, compute final_cost as follows: subtotal = quantity * unit_price; if coupon_code matches coupons.code and order_date ∈ [valid_from, valid_to], then discount = LEAST(subtotal * discount_pct, max_discount); otherwise discount = 0; tax = 0.08 * (subtotal - discount); final_cost = subtotal - discount + tax. Write SQL to output (order_id, user_id, final_cost) for all orders.

Calculate Final Order Cost with Coupons and Tax

You are given two tables:

  1. orders(order_id INT, user_id INT, order_date DATE, quantity INT, unit_price DECIMAL(10,2), coupon_code VARCHAR(20))
  2. coupons(code VARCHAR(20), discount_pct DECIMAL(5,2), max_discount DECIMAL(10,2), valid_from DATE, valid_to DATE)

For each order, compute final_cost as follows:

  • subtotal = quantity * unit_price
  • If coupon_code matches coupons.code AND order_date is between valid_from and valid_to (inclusive), then:
      discount = LEAST(subtotal * discount_pct, max_discount)
    Otherwise:
      discount = 0
    
  • tax = 0.08 * (subtotal - discount)
  • final_cost = subtotal - discount + tax

Write an SQL query to output (order_id, user_id, final_cost) for all orders.

Table orders

columntypeconstraints
order_idINTPRIMARY KEY, NOT NULL
user_idINTNOT NULL
order_dateDATENOT NULL
quantityINTNOT NULL
unit_priceDECIMAL(10,2)NOT NULL
coupon_codeVARCHAR(20)

Sample data:

coupon_codeorder_dateorder_idquantityunit_priceuser_id
SAVE102025-05-101250101
SAVE102025-04-152160102
OLD52025-02-103515101
BIG502025-06-104340103
UNKNOWN2025-05-205230104

Table coupons

columntypeconstraints
codeVARCHAR(20)PRIMARY KEY, NOT NULL
discount_pctDECIMAL(5,2)NOT NULL
max_discountDECIMAL(10,2)NOT NULL
valid_fromDATENOT NULL
valid_toDATENOT NULL

Sample data:

codediscount_pctmax_discountvalid_fromvalid_to
SAVE100.1202025-05-012025-05-31
BIG500.5302025-04-012025-06-30
OLD50.0552025-01-012025-03-31

Expected output

One row per order, showing the order_id, user_id, and the computed final_cost after applying any valid coupon discount and 8% tax on the post-discount amount.

final_costorder_iduser_id
97.21101
64.82102
76.953101
97.24103
64.85104

Hints

  1. Use a LEFT JOIN from orders to coupons and include the date-range condition in the join.
  2. Compute subtotal and discount in a subquery or CTE, then apply the tax formula to get final_cost.