Code RoomPaid revenue per customer
MediumPrep Room Coding #5024

Paid revenue per customer

CodingAlgorithms & data structuresMid–Senior~9 min

Given `orders` with columns `order_id`, `customer`, `amount`, `status` and `placed`, sum `amount` per `customer` counting only rows whose `status` is `paid`. Return `customer` and `total`, sorted by `customer` ascending. Customers with no paid orders do not appear.

Implement
paid_per_customer(orders: dataframe) → dataframe
Examples
in[{"__df__":[{"amount":120.5,"placed":"2024-01-05","status":"paid","customer":"ada","order_id":1},{"amount":80,"placed":"2024-01-07","status":"refunded","customer":"bo","order_id":2},{"amount":45.25,"placed":"2024-02-11","status":"paid","customer":"ada","order_id":3},{"amount":200,"placed":"2024-02-14","status":"paid","customer":"cy","order_id":4},{"amount":15.75,"placed":"2024-03-02","status":"pending","customer":"bo","order_id":5},{"amount":60,"placed":"2024-03-19","status":"paid","customer":"ada","order_id":6}]}]out[{"total":225.75,"customer":"ada"},{"total":200,"customer":"cy"}]
What a strong answer looks like

State your approach and its time/space complexity out loud before you optimize. Handle the edge cases (empty input, duplicates, overflow), and say why you chose this over the brute force. Green tests are the floor, not the grade.

0:00 of about 9 min
InputExpectedGot
[{"__df__":[{"amount":120.5,"placed":"2024-01-05","status":"paid","customer":"ada","order_id":1},{"amount":80,"placed":"2024-01-07","status":"refunded","customer":"bo","order_id":2},{"amount":45.25,"placed":"2024-02-11","status":"paid","customer":"ada","order_id":3},{"amount":200,"placed":"2024-02-14","status":"paid","customer":"cy","order_id":4},{"amount":15.75,"placed":"2024-03-02","status":"pending","customer":"bo","order_id":5},{"amount":60,"placed":"2024-03-19","status":"paid","customer":"ada","order_id":6}]}][{"total":225.75,"customer":"ada"},{"total":200,"customer":"cy"}]not run yetsample