All problems

Typical Size by Type

mediumSQLGroupByAggregation

Risk at Northline Bank is asking whether withdrawals here run bigger than deposits, and wants the typical signed amount for each kind of movement. Signed, deliberately: the report is meant to show direction as well as size, so an outflow arrives on the page as a negative number.

transactions — one row per movement of money. customer_id points at a row in customers; type is one of deposit, withdrawal or transfer; txn_date is the day it settled. The ledger is signed: money arriving in an account is stored as a positive amount, and money leaving it as a negative one, so a 600-dollar withdrawal is recorded as -600.

id customer_id amount type txn_date
1 1 500 deposit 2023-07-01
2 1 -120 withdrawal 2023-07-03
3 2 1000 deposit 2023-07-02
4 2 -300 withdrawal 2023-07-05
5 3 250 deposit 2023-07-04
6 3 -600 withdrawal 2023-07-06
7 4 800 deposit 2023-07-07
8 4 -450 withdrawal 2023-07-08
9 5 2000 deposit 2023-07-09
10 5 -1500 withdrawal 2023-07-10
11 1 -200 transfer 2023-07-11
12 3 400 deposit 2023-07-12

The table already exists in the database — there is nothing to create or load.

Task: Write a query that returns two columns, type and avg_amount, one row per transaction type, avg_amount being the mean amount of movements of that type exactly as stored — signs included — rounded to 2 decimal places. Highest value first; two types on the same figure come back in alphabetical order of type.

Example output — shape only, on invented averages. The type labels are the real stored ones, and the figures keep the sign the ledger gives them:

type avg_amount
deposit 1240.5
withdrawal -305.75
transfer -880.25

Sign in to solve this problem

Reading problems is free for everyone — solving them (Run, Submit, and tracking what you've solved) needs an account.

Sign in

Discussion

Sign in to join the discussion — reading is open to everyone.

Loading comments…