Query 1 is comparing rows in a table to a single row in the same table. It could be rewritten for better readability as:
select distinct t.branch_name
from branch t
where t.assets > (select nvl(assets,0) from branch
where branch_city = 'Brooklyn');
Better query for multiple branches in 'Brooklyn':
create table branch (
branch_name varchar2(30),
branch_city varchar2(30),
assets number(10));
insert into branch (branch_name,branch_city,assets)
values ('Manhasset 01','Manhasset',12345);
insert into branch (branch_name,branch_city,assets)
values ('Brooklyn Branch 12','Brooklyn',22222);
insert into branch (branch_name,branch_city,assets)
values ('White Plains Downtown','White Plains',33333);
insert into branch (branch_name,branch_city,assets)
values ('Brooklyn DUMBO','Brooklyn',44444);
insert into branch (branch_name,branch_city,assets)
values ('Manhattan - Financial District','Manhattan',55555);
insert into branch (branch_name,branch_city,assets)
values ('Bronx Branch 8','Bronx',66666);
insert into branch (branch_name,branch_city,assets)
values ('Queens - La Guardia','Queens',1234523423);
insert into branch (branch_name,branch_city,assets)
values ('Queens - Flushing Meadows','Queens',12);
insert into branch (branch_name,branch_city,assets)
values ('Rikers Island','Rikers Island',2);
insert into branch (branch_name,branch_city,assets)
values ('Harlem - Branch 1','Harlem',99999);
commit;
select * from branch;
BRANCH_NAME BRANCH_CITY ASSETS
------------------------------ ------------------------------ ----------
Manhasset 01 Manhasset 12345
Brooklyn Branch 12 Brooklyn 22222
White Plains Downtown White Plains 33333
Brooklyn DUMBO Brooklyn 44444
Manhattan - Financial District Manhattan 55555
Bronx Branch 8 Bronx 66666
Queens - La Guardia Queens 1234523423
Queens - Flushing Meadows Queens 12
Rikers Island Rikers Island 2
Harlem - Branch 1 Harlem 99999
/* this should now work for multiple or no Brooklyn branches */
select distinct t.branch_name
from branch t
where t.assets > nvl((select min(nvl(assets,0)) from branch
where branch_city = 'Brooklyn'),0);
BRANCH_NAME
------------------------------
Harlem - Branch 1
White Plains Downtown
Queens - La Guardia
Brooklyn DUMBO
Manhattan - Financial District
Bronx Branch 8
delete from branch
where branch_city = 'Brooklyn';
commit;
select distinct t.branch_name
from branch t
where t.assets > nvl((select min(nvl(assets,0)) from branch
where branch_city = 'Brooklyn'),0);
BRANCH_NAME
------------------------------
Rikers Island
Harlem - Branch 1
White Plains Downtown
Queens - La Guardia
Manhattan - Financial District
Bronx Branch 8
Manhasset 01
Queens - Flushing Meadows
Query 2 how about this:
select distinct d.customer_name
from depositor d,account a
where d.account_number = a.account_number
and a.branch_name = 'Brooklyn';
using explicit join:
select distinct d.customer_name
from depositor d inner join account a
on d.account_number = a.account_number
and a.branch_name = 'Brooklyn';