FastPrepTop Five Countries by Product Revenue

Top Five Countries by Product Revenue

Apple logoApple● MediumFULLTIMEPHONE SCREEN

Problem statement

For each Apple product, find the five countries with the highest total sales revenue.

A line item contributes quantity * unit_price to its order country. Sum all line-item revenue for the same product and country.

Result

Return product_id, product_name, country_id, country_name, and sales_amount. Rank countries independently for each product by sales_amount descending. When amounts are equal, rank the country whose English country_name is alphabetically smaller first.

Return at most five rows per product. Order the final result by product_id ascending, then sales_amount descending, then country_name ascending.

Table schema

MySQLPostgreSQLPandas

Use the same input data with any supported language. Open the Schema tab in the editor to see the generated SQL setup or Pandas DataFrames.

products

ColumnTypeNullableDescription
product_idPKIntegerNo—
product_nameTextNo—
previous_model_idIntegerYes—

Foreign key: previous_model_id → products(product_id)

countries

ColumnTypeNullableDescription
country_idPKIntegerNo—
country_nameTextNo—

orders

ColumnTypeNullableDescription
order_idPKIntegerNo—
customer_idIntegerNo—
country_idIntegerNo—
order_dateDateNo—

Foreign key: country_id → countries(country_id)

order_items

ColumnTypeNullableDescription
order_idPKIntegerNo—
product_idPKIntegerNo—
quantityIntegerNo—
unit_priceDecimalNo—

Foreign key: order_id → orders(order_id)

Foreign key: product_id → products(product_id)

Expected result

Your query or function must return these columns.

ColumnTypeNullableDescription
product_idIntegerNo—
product_nameTextNo—
country_idIntegerNo—
country_nameTextNo—
sales_amountDecimalNo—

Row order: must match exactly. Numeric tolerance: 0.

Constraints

  • Every quantity is a positive integer.
  • Every unit_price is a non-negative exact decimal.
  • Every product_name and country_name is unique.
  • Only product-country pairs with at least one line item appear in the result.
  • Each input table contains at most 2,000 rows.

More Apple problems

See Apple hiring insights