I’m having some trouble with writing this query. This is what I have so far:
Find the name of the customer that deposited the highest amount with one transaction (include the transaction amount).
select name, amount from customer, transaction, account where account.owner_ssn = customer.ssn and account.type = transaction.type order by transaction.amount desc limit by one;
**This is the bank database: **
CREATE TABLE customer (
name VARCHAR(20),
sex CHAR(1),
ssn CHAR(9) NOT NULL,
phone CHAR(15),
dob DATE,
address VARCHAR(50),
PRIMARY KEY(ssn)
);
CREATE TABLE account (
number CHAR(16) UNIQUE NOT NULL,
open_date DATE,
type CHAR(20),
owner_ssn CHAR(9) NOT NULL,
PRIMARY KEY(number)
);
CREATE TABLE transaction (
id INT(20) UNIQUE NOT NULL,
amount DECIMAL(9,2),
tdate DATE,
type CHAR(10),
account_num CHAR(16),
PRIMARY KEY(id)
);
Advertisement
Answer
Below query will return the customer name with amount who deposited highest amount in a single transaction. If there is more than one customer with same highest amount then the first one to deposited that will be selected.
select name, amount from customer c inner join account a on c.ssn=a.owner_ssn inner join transaction t on a.type = t.type order by t.amount desc, t.tdate limit 1;