Postgres - написать не сложные скрипты

1 500 руб.за час
02 июля 2020, 13:35 • 7 откликов • 70 просмотров
1. Получить список открытых магазинов и для каждого магазина в отдельном поле показать наличие действующей лицензии.
2. Для каждого открытого магазина в отдельном поле указать, что есть ли у магазина обе лицензии, только алкогольная, только на табак или нет лицензий.
3. В таблице t_logs для каждой сессии и шага получить, сколько было потрачено cpu на каждый шаг.
Каким то образом нужно придумать логирование силетов тоже кроме тригеров на Insert и Create
4. Предоставить исходные коды решения задания.
5. Рассказать как делал, какие были сложности.

create temp table t_licenses
(
license_id int,
stock_id int,
license_desc varchar(100),
valid_from date,
valid_to date
)on commit preserve rows;
commit;

COMMENT ON TABLE t_licenses IS 'Таблица с различными лицензиями для магазина';
COMMENT ON COLUMN t_licenses.license_id IS 'Уникальный идентификатор лицензии';
COMMENT ON COLUMN t_licenses.stock_id IS 'Уникальный идентификатор магазина';
COMMENT ON COLUMN t_licenses.license_desc IS 'Описание лицензии';
COMMENT ON COLUMN t_licenses.valid_from IS 'Дата начала действия лицензии';
COMMENT ON COLUMN t_licenses.valid_to IS 'Дата окончания действия лицензии';


insert into t_licenses values(1, 1, 'Лицензия на продажу Алкоголя №123' , '2019-01-01', '2019-06-01');
insert into t_licenses values(2, 1, 'Лицензия на продажу Табака №555' , '2019-01-01', '2020-12-31');
insert into t_licenses values(3, 2, 'Лицензия на продажу Алкоголя №647' , '2019-01-01', '2019-06-01');
insert into t_licenses values(4, 3, 'Лицензия на продажу Алкоголя №111' , '2019-01-01', '2019-12-31');
insert into t_licenses values(5, 4, 'Лицензия на продажу Табака №5252' , '2019-01-01', '2019-02-01');
insert into t_licenses values(6, 5, 'Лицензия на продажу Алкоголя №1' , '2019-01-01', '2019-12-31');
insert into t_licenses values(7, 5, 'Лицензия на продажу Алкоголя №1' , '2020-01-01', '2020-12-31');
commit;

create temp table t_stocks
(
stock_id int,
stock_name varchar(100),
open_dt date,
close_dt date
)on commit preserve rows;
commit;

COMMENT ON TABLE t_stocks IS 'Таблица со справочником магазинов';
COMMENT ON COLUMN t_stocks.stock_id IS 'Уникальный идентификатор магазина';
COMMENT ON COLUMN t_stocks.stock_name IS 'Название магазина';
COMMENT ON COLUMN t_stocks.open_dt IS 'Дата открытия магазина';
COMMENT ON COLUMN t_stocks.close_dt IS 'Дата закрытия магазина';

insert into t_stocks values (1, 'Алакуртти' , '2018-01-01' , '2019-06-01' );
insert into t_stocks values (2, 'Вавил' , '2018-01-01' , null );
insert into t_stocks values (3, 'Воскресенск' , '2018-01-01' , null );
insert into t_stocks values (4, 'Гарант' , '2018-01-01' , '2019-01-01' );
insert into t_stocks values (5, 'Континент' , '2018-01-01' , '2018-01-01' );
insert into t_stocks values (6, 'Мираж' , '2018-01-01' , null );
insert into t_stocks values (7, 'Пепяка' , '2018-01-01' , null );
insert into t_stocks values (8, 'Планерная' , '2018-01-01' , '2019-12-01' );
commit;

create temp table t_logs
(
query_finish timestamp,
session_id int,
cpu_elapsed int,
comment varchar(100)
)on commit preserve rows;
commit;

COMMENT ON TABLE t_logs IS 'Таблица с логами работы ETL';
COMMENT ON COLUMN t_logs.query_finish IS 'Время окончания работы запроса';
COMMENT ON COLUMN t_logs.session_id IS 'Уникальный идентификатор сессии';
COMMENT ON COLUMN t_logs.cpu_elapsed IS 'Затраченное cpu на сессию (накопительно)';
COMMENT ON COLUMN t_logs.comment IS 'Комментарий';

insert into t_logs values('2019-11-29 09:31:51', 97367, 2500, 'insert period 4');
insert into t_logs values('2019-11-29 09:30:43', 97367, 1940, 'insert period 3');
insert into t_logs values('2019-11-29 09:29:32', 97367, 1820, 'insert period 2');
insert into t_logs values('2019-11-29 09:28:34', 97367, 860 , 'insert period 1');
insert into t_logs values('2019-11-29 08:57:33', 87081, 3050, 'insert period 6');
insert into t_logs values('2019-11-29 08:54:39', 87081, 2810, 'insert period 5');
insert into t_logs values('2019-11-29 08:51:48', 87081, 2690, 'insert period 4');
insert into t_logs values('2019-11-29 08:49:10', 87081, 2600, 'insert period 3');
insert into t_logs values('2019-11-29 08:46:34', 87081, 2510, 'insert period 2');
insert into t_logs values('2019-11-29 08:40:28', 87081, 2420, 'insert period 1');
insert into t_logs values('2019-11-29 08:18:34', 87081, 2240, 'create table');
commit;


1. Получить список открытых магазинов и для каждого магазина в отдельном поле показать наличие действующей лицензии.
2. Для каждого открытого магазина в отдельном поле указать, что есть ли у магазина обе лицензии, только алкогольная, только на табак или нет лицензий.
3. В таблице t_logs для каждой сессии и шага получить, сколько было потрачено cpu на каждый шаг.
Каким то образом нужно придумать логирование силетов тоже кроме тригеров на Insert и Create
4. Предоставить исходные коды решения задания.
5. Рассказать как делал, какие были сложности.