SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
--https://sqlize.online/sql/oracle21/c3d60ebfbfdb2829afc312408113bf7c/ -- DROP -- DROP TABLE clients; -- DROP TABLE accounts; ------------------------ -- CREATE INSERT CREATE TABLE clients (client_id VARCHAR(1), FIO VARCHAR(255) , Region VARCHAR(50), account_num INT); INSERT INTO clients VALUES ('A','Иванов','Москва',111); INSERT INTO clients VALUES ('A','Иванов','Москва',222); INSERT INTO clients VALUES ('B','Петров','Иваново',333); INSERT INTO clients VALUES ('C','Сидоров','Москва',444); INSERT INTO clients VALUES ('D','Новиков','Москва',555); INSERT INTO clients VALUES ('E','Шварценеггер','Лос-Анджелес',666); INSERT INTO clients VALUES ('D','Новиков','Москва',777); INSERT INTO clients VALUES ('F','Морозов','г.Москва',888); INSERT INTO clients VALUES ('G','Цветков','Москва',999); INSERT INTO clients VALUES ('G','Цветков','Москва',1111); INSERT INTO clients VALUES ('H','Шубин','Монтевидео',2222); INSERT INTO clients VALUES ('K','Крюков','Москва',3333); CREATE TABLE accounts (value_day varchar(25), Summa_USD int, Account_num INT); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-01-01',15000,111); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-02-01',10000,111) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-03-01',5000,222) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-03-01',30000,333) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-04-01',20000,444) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-01-01',200000,666); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-02-01',400000,666); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-03-01',200000,666); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-04-01',198000,666) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-01-01',5000,555); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-02-01',15000,555); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-03-01',10000,555) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-01-01',2000,777); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-03-01',20000,777); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-08-01',10000,777) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-02-01',10000,888); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-04-01',2000,888); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2012-07-01',20500,888) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-01-01',45000,999); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-02-01',545000,999); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-03-01',0,999) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-01-01',1000,1111); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-02-01',10000,1111); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-03-01',21000,1111); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-04-01',19500,1111) ; INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-01-01',10000,2222); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-02-01',20000,2222); INSERT INTO accounts (value_day , Summa_USD , Account_num) VALUES ('2013-03-01',60000,2222) ; COMMIT; ------------------------ SELECT * FROM clients; SELECT * FROM accounts; ------------------------ select * from clients cl join accounts ac on ac.Account_num = cl.Account_num; ------------------------ -- select distinct -- Account_num, -- last_value(Summa_USD) over (partition by Account_num order by value_day -- rows between unbounded preceding and unbounded following) "на последнюю дату" -- from accounts -- ; -- Задание 1 -- Вывести список клиентов из Москвы с суммарными остатками по клиенту -- и проставить флаг превышения средств свыше 20 000 -- на последнюю дату. with acc_last_sum as ( select distinct Account_num, last_value(Summa_USD) over (partition by Account_num order by value_day rows between unbounded preceding and unbounded following) from accounts ) select * from acc_last_sum; -- select -- -- Region -- client_id -- ,FIO -- ,sum(last_sum) -- -- ,case -- -- -- when sum(Summa_USD) > 20000 then true -- -- -- else false -- -- when sum( -- -- last_value(Summa_USD) over (partition by Account_num order by value_day -- -- rows between unbounded preceding and unbounded following) -- -- ) > 20000 then 1 -- -- else 0 -- -- end "флаг" -- from clients cl -- join acc_last_sum ac on ac.Account_num = cl.Account_num -- where -- -- lower(Region) like '%м%с%к%' --ilike -- -- replace(Region, 'г.') like 'Москва' -- lower(Region) in ('москва','г.москва') -- group by -- Region, client_id, FIO -- ) -- select * from temp1 -- ;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear