SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE clients ( id number(10) NOT NULL PRIMARY KEY, name varchar2(1000), place_of_birth varchar2(1000), date_of_birth date, adress varchar2(1000), passport varchar2(100) ); CREATE TABLE tarifs ( id number(10) NOT NULL PRIMARY KEY, name varchar2(100), cost number(10,2) ); CREATE TABLE product_type ( id number(10) NOT NULL PRIMARY KEY, name varchar2(100), begin_date date, end_date date, tarif_ref number(10) NOT NULL, CONSTRAINT prod_type_tar_fk FOREIGN KEY (tarif_ref) REFERENCES tarifs(id) ); CREATE TABLE products ( id number(10) NOT NULL PRIMARY KEY, product_type_id number(10) NOT NULL, name varchar2(100), client_ref number(10) NOT NULL, open_date date, close_date date, CONSTRAINT prod_prodtype_fk FOREIGN KEY (product_type_id) REFERENCES product_type(id), CONSTRAINT prod_cl_fk FOREIGN KEY (client_ref) REFERENCES clients(id) ); CREATE TABLE accounts ( id number(10) NOT NULL PRIMARY KEY, name varchar2(100), saldo number(10, 2), client_ref number(10) NOT NULL, open_date date, close_date date, product_ref number(10) NOT NULL, acc_num varchar2(25), CONSTRAINT acc_cl_fk FOREIGN KEY (client_ref) REFERENCES clients(id), CONSTRAINT acc_prod_fk FOREIGN KEY (product_ref) REFERENCES products(id) ); CREATE TABLE records ( id number(10) NOT NULL PRIMARY KEY, dt number(1), sum number(10, 2), acc_ref number(10) NOT NULL, oper_date date, CONSTRAINT rec_acc_fk FOREIGN KEY (acc_ref) REFERENCES accounts(id) ); insert into tarifs values (1,'Тариф за выдачу кредита', 10); insert into tarifs values (2,'Тариф за открытие счета', 10); insert into tarifs values (3,'Тариф за обслуживание карты', 10); insert into product_type values (1, 'КРЕДИТ', to_date('01.01.2018','DD.MM.YYYY'), null, 1); insert into product_type values (2, 'ДЕПОЗИТ', to_date('01.01.2018','DD.MM.YYYY'), null, 2); insert into product_type values (3, 'КАРТА', to_date('01.01.2018','DD.MM.YYYY'), null, 3); insert into clients values (1, 'Сидоров Иван Петрович', 'Россия, Московская облать, г. Пушкин', to_date('01.01.2001','DD.MM.YYYY'), 'Россия, Московская облать, г. Пушкин, ул. Грибоедова, д. 5', '2222 555555, выдан ОВД г. Пушкин, 10.01.2015'); insert into clients values (2, 'Иванов Петр Сидорович', 'Россия, Московская облать, г. Клин', to_date('01.01.2001','DD.MM.YYYY'), 'Россия, Московская облать, г. Клин, ул. Мясникова, д. 3', '4444 666666, выдан ОВД г. Клин, 10.01.2015'); insert into clients values (3, 'Петров Сиодр Иванович', 'Россия, Московская облать, г. Балашиха', to_date('01.01.2001','DD.MM.YYYY'), 'Россия, Московская облать, г. Балашиха, ул. Пушкина, д. 7', '4444 666666, выдан ОВД г. Клин, 10.01.2015'); insert into products values (1, 1, 'Кредитный договор с Сидоровым И.П.', 1, to_date('01.06.2015','DD.MM.YYYY'), null); insert into products values (2, 2, 'Депозитный договор с Ивановым П.С.', 2, to_date('01.08.2017','DD.MM.YYYY'), null); insert into products values (3, 3, 'Карточный договор с Петровым С.И.', 3, to_date('01.08.2017','DD.MM.YYYY'), null); insert into accounts values (1, 'Кредитный счет для Сидоровым И.П.', -2000, 1, to_date('01.06.2015','DD.MM.YYYY'), null, 1, '45502810401020000022'); insert into accounts values (2, 'Депозитный счет для Ивановым П.С.', 6000, 2, to_date('01.08.2017','DD.MM.YYYY'), null, 2, '42301810400000000001'); insert into accounts values (3, 'Карточный счет для Петровым С.И.', 8000, 3, to_date('01.08.2017','DD.MM.YYYY'), null, 3, '40817810700000000001'); insert into records values (1, 1, 5000, 1, to_date('01.06.2015','DD.MM.YYYY')); insert into records values (2, 0, 1000, 1, to_date('01.07.2015','DD.MM.YYYY')); insert into records values (3, 0, 2000, 1, to_date('01.08.2015','DD.MM.YYYY')); insert into records values (4, 0, 3000, 1, to_date('01.09.2015','DD.MM.YYYY')); insert into records values (5, 1, 5000, 1, to_date('01.10.2015','DD.MM.YYYY')); insert into records values (6, 0, 3000, 1, to_date('01.10.2015','DD.MM.YYYY')); insert into records values (7, 0, 10000, 2, to_date('01.08.2017','DD.MM.YYYY')); insert into records values (8, 1, 1000, 2, to_date('05.08.2017','DD.MM.YYYY')); insert into records values (9, 1, 2000, 2, to_date('21.09.2017','DD.MM.YYYY')); insert into records values (10, 1, 5000, 2, to_date('24.10.2017','DD.MM.YYYY')); insert into records values (11, 0, 6000, 2, to_date('26.11.2017','DD.MM.YYYY')); insert into records values (12, 0, 120000, 3, to_date('08.09.2017','DD.MM.YYYY')); insert into records values (13, 1, 1000, 3, to_date('05.10.2017','DD.MM.YYYY')); insert into records values (14, 1, 2000, 3, to_date('21.10.2017','DD.MM.YYYY')); insert into records values (15, 1, 5000, 3, to_date('24.10.2017','DD.MM.YYYY')); insert into clients values (4, 'Крылов Виталий Павлович', 'Россия, Московская облать, г. Подольск', to_date('09.11.2000','DD.MM.YYYY'), 'Россия, Московская облать, г. Подольск, ул. Грибоедова, д. 5', '2222 555555, выдан ОВД г. Подольск, 20.11.2020'); insert into clients values (5, 'Петрова Евгения Викторовна', 'Россия, Московская облать, г. Одинцово', to_date('15.01.1990','DD.MM.YYYY'), 'Россия, Московская облать, г. Одинцово, ул. Грибоедова, д. 5', '2222 555555, выдан ОВД г. Одинцово, 30.01.2010'); insert into clients values (6, 'Горин Иван Викторович', 'Россия, Московская облать, г. Дзержинский', to_date('05.03.1976','DD.MM.YYYY'), 'Россия, Московская облать, г. Дзержинский, ул. Грибоедова, д. 5', '2222 555555, выдан ОВД г. Дзержинский, 20.03.1996'); insert into clients values (7, 'Ветров Илья Иванович', 'Россия, Московская облать, г. Дзержинский', to_date('15.06.1996','DD.MM.YYYY'), 'Россия, Московская облать, г. Дзержинский, ул. Грибоедова, д. 5', '2222 555555, выдан ОВД г. Дзержинский, 25.06.2016'); insert into products values (4, 2, 'Депозитный договор с Крыловым В.П.', 4, to_date('01.08.2022','DD.MM.YYYY'), null); insert into products values (5, 2, 'Депозитный договор с Петровой Е.В.', 5, to_date('11.05.2023','DD.MM.YYYY'), null); insert into products values (6, 2, 'Депозитный договор с Гориным И.В.', 6, to_date('01.08.2024','DD.MM.YYYY'), null); insert into products values (7, 1, 'Кредитный договор с Гориным И.В.', 6, to_date('11.09.2024','DD.MM.YYYY'), null); insert into products values (8, 3, 'Карточный договор с Ветровым И.И.', 7, to_date('11.03.2022','DD.MM.YYYY'), null); insert into accounts values (4, 'Депозитный счет для Крылова В.П.', 4000, 4, to_date('01.08.2022','DD.MM.YYYY'), null, 4, '498721104020300650022'); insert into accounts values (5, 'Депозитный счет для Петровой Е.В.', 2000, 5, to_date('11.05.2023','DD.MM.YYYY'), null, 5, '405341104020258650022'); insert into accounts values (6, 'Депозитный счет для Горина И.В.', 5000, 6, to_date('01.08.2024','DD.MM.YYYY'), null, 6, '412641967038758650022'); insert into accounts values (7, 'Кредитный счет для Горина И.В.', -2000, 6, to_date('11.09.2024','DD.MM.YYYY'), null, 7, '490526967048296310022'); insert into accounts values (8, 'Карточный счет для Ветрова И.И.', 15000, 7, to_date('11.03.2022','DD.MM.YYYY'), null, 8, '40320810700013500023'); insert into records values (16, 1, 5000, 4, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (17, 0, 3000, 4, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (18, 1, 1000, 5, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (19, 1, 2000, 6, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (20, 0, 5000, 7, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (21, 1, 3000, 7, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (22, 1, 4000, 8, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (23, 1, 2500, 8, to_date('09.11.2024','DD.MM.YYYY')); insert into records values (24, 0, 3500, 4, to_date('12.12.2024','DD.MM.YYYY')); insert into records values (25, 1, 3000, 4, to_date('15.12.2024','DD.MM.YYYY')); insert into records values (26, 1, 4000, 4, to_date('15.12.2024','DD.MM.YYYY')); insert into records values (27, 0, 2500, 4, to_date('19.12.2024','DD.MM.YYYY')); insert into records values (28, 1, 3500, 4, to_date('30.12.2024','DD.MM.YYYY')); insert into records values (29, 1, 3000, 4, to_date('30.12.2024','DD.MM.YYYY')); insert into records values (30, 1, 4000, 6, to_date('13.12.2024','DD.MM.YYYY')); insert into records values (31, 1, 2500, 6, to_date('13.12.2023','DD.MM.YYYY')); insert into records values (32, 0, 4500, 6, to_date('18.12.2023','DD.MM.YYYY')); SELECT accounts.id, accounts.name, accounts.saldo, accounts.acc_num FROM accounts INNER JOIN products ON accounts.product_ref = products.id INNER JOIN clients ON products.client_ref = clients.id WHERE products.product_type_id = 2 AND NOT EXISTS(SELECT * FROM products WHERE clients.id = products.client_ref AND product_type_id = 1); SELECT products.product_type_id, SUM(records.sum) AS Sum FROM records JOIN accounts ON records.acc_ref = accounts.id JOIN products ON accounts.product_ref = products.id WHERE records.oper_date = to_date('09.11.2024','DD.MM.YYYY') GROUP BY products.product_type_id ORDER BY products.product_type_id; SELECT records.oper_date, clients.id, clients.name, SUM(records.sum) as Sum FROM records JOIN accounts ON records.acc_ref = accounts.id JOIN clients ON accounts.client_ref = clients.id WHERE MONTHS_BETWEEN(SYSDATE, records.oper_date) <= 1 AND records.dt = 1 GROUP BY records.oper_date, clients.id, clients.name ORDER BY records.oper_date; SELECT c.id, c.name, c.place_of_birth, c.date_of_birth, c.adress, c.passport FROM clients c JOIN accounts ON c.id=accounts.client_ref JOIN products ON accounts.product_ref=products.id WHERE products.product_type_id=1 AND products.close_date IS NULL AND accounts.saldo>=0; UPDATE products p SET close_date=SYSDATE WHERE product_type_id=1 AND EXISTS(SELECT * FROM accounts WHERE p.id = accounts.product_ref AND saldo = 0) AND NOT EXISTS(SELECT * FROM products p1 WHERE p.client_ref = p1.client_ref AND p1.open_date > p.open_date); UPDATE product_type SET end_date=SYSDATE WHERE NOT EXISTS(SELECT * FROM products JOIN accounts ON products.id=accounts.product_ref JOIN records ON accounts.id=records.acc_ref WHERE product_type.id=products.product_type_id AND MONTHS_BETWEEN(SYSDATE, records.oper_date) <= 1); UPDATE accounts a SET saldo=(SELECT SUM(CASE WHEN dt=0 THEN sum ELSE -sum END) FROM records WHERE acc_ref = a.id); SELECT * FROM accounts; ALTER TABLE products ADD sum NUMBER(10,2); UPDATE products p SET sum=(SELECT MAX(sum) FROM records JOIN accounts ON records.acc_ref=accounts.id WHERE p.id = accounts.product_ref AND records.dt=1) WHERE p.product_type_id = 1; UPDATE products p SET sum=(SELECT MAX(sum) FROM records JOIN accounts ON records.acc_ref=accounts.id WHERE p.id = accounts.product_ref AND records.dt=0) WHERE p.product_type_id != 1; ALTER TABLE products ADD sum NUMBER(10,2); UPDATE products p SET sum=(SELECT MAX( CASE WHEN (p.product_type_id = 1 AND records.dt = 1) OR (p.product_type_id != 1 AND records.dt = 0) THEN records.sum END) FROM records JOIN accounts ON records.acc_ref=accounts.id WHERE p.id = accounts.product_ref); SELECT * FROM products;

Stuck with a problem? Got Error? Ask ChatGPT!

Copy Clear