How to run insert statement as much times as select statement gives unique values?
To do this you can use insert ... select:

insert into banks(ID, NR, MONEY)
select 
   gen_id(gen_name, 1), 
   ID, 
   3000
from CLIENTS


If you have a trigger on CLIENTS that generates the ID on insert, or - Firebird 3 - ID is an identity column, then you can simplify this to:

insert into banks(NR, MONEY)
select 
   ID, 
   3000
from CLIENTS