runtime
26 / 88

task Revenue & order value · medium

Monthly revenue after refunds

For delivered orders, return month (YYYY-MM of order_date) and net_revenue: line revenue (quantity × unit_price) minus refunds for those orders.

what to return

Columns
monthnet_revenue in this order
Rows
4 rows · any order
Watch for
Orders without refunds subtract 0.
Round net_revenue to 2 decimals.
Months with no delivered orders aren't listed.
Skill
Combine line totals and refunds without double counting. Refresher: Revenue & payment reconciliation →

expected result

Your query should return exactly these columns and values. Run it and compare.

expected result4 rows · any order
monthnet_revenue
2025-01331
2025-02448
2025-03864.5

first 3 of 4 rows

data you can query

Sample rows from each table. Each column shows its type underneath; → marks a link to another table.

sales_orders5 columns · 33 rows
idinteger · keyshopper_idinteger → shoppersorder_datetextstatustextdelivered_datetext
10112025-01-04delivered2025-01-08
10222025-01-06delivered2025-01-07
10312025-01-15delivered2025-01-20
10432025-01-18cancelledNULL
10542025-01-22delivered2025-01-31

showing 5 of 33 rows

order_lines4 columns · 48 rows
order_idinteger → sales_ordersitem_idinteger → catalog_itemsquantityintegerunit_pricereal
1011139
1013219.5
1024159
1035145
10310312

showing 5 of 48 rows

order_refunds4 columns · 6 rows
idinteger · keyorder_idintegerrefunded_attextamountreal
11032025-01-2515
21062025-02-0674
31112025-02-2559
41112025-02-2645
51222025-03-2010

showing 5 of 6 rows

solution.sql
 

Hints and the answer are always available. Using them counts the question as solved with help.