RealHero

sql code

May 11th, 2022 (edited)
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE DATABASE training;
  2. CREATE SCHEMA company;
  3. set search_path = company;
  4. CREATE DOMAIN valid_number AS TEXT CHECK (VALUE ~ '^[+][7][0-9]{10}$');
  5.  
  6. CREATE TABLE client (
  7.     id SERIAL CONSTRAINT client_pk PRIMARY KEY,
  8.     last_name VARCHAR(50) NOT NULL ,
  9.     first_name VARCHAR(50) NOT NULL,
  10.     middle_name VARCHAR(50) NULL,
  11.     address TEXT NOT NULL,
  12.     phone valid_number NOT NULL
  13. );
  14.  
  15. CREATE TABLE filial (
  16.     id NUMERIC (3) CONSTRAINT filial_pk PRIMARY KEY,
  17.     name TEXT NOT NULL,
  18.     address TEXT NOT NULL,
  19.     phone valid_number NOT NULL
  20. );
  21.  
  22. CREATE TABLE agent (
  23.     id SERIAL CONSTRAINT agent_pk PRIMARY KEY,
  24.     filial_id INTEGER NOT NULL CONSTRAINT agent_filial_fk REFERENCES filial (id)
  25.         ON DELETE RESTRICT ON UPDATE CASCADE,
  26.     last_name VARCHAR(50) NOT NULL ,
  27.     first_name VARCHAR(50) NOT NULL,
  28.     middle_name VARCHAR(50) NULL,
  29.     phone valid_number NOT NULL
  30. );
  31.  
  32. CREATE TABLE vid_strah (
  33.     id SERIAL CONSTRAINT vid_strah_id_pk PRIMARY KEY,
  34.     name TEXT CONSTRAINT vid_strah_name_key UNIQUE ,
  35.     tarif_stav DECIMAL CONSTRAINT tarif_stav_check CHECK ((tarif_stav > (0)::DECIMAL) AND (tarif_stav <= (100)::DECIMAL))
  36. );
  37.  
  38. CREATE TABLE dogovor (
  39.     no SERIAL CONSTRAINT dogovor_pk PRIMARY KEY,
  40.     date_of_reg DATE CONSTRAINT date_of_reg_check CHECK (date_of_reg <= current_date),
  41.     strah_sum DECIMAL CONSTRAINT strah_sum_check CHECK (strah_sum > 0::DECIMAL),
  42.     id_filial INTEGER NOT NULL CONSTRAINT dogovor_filial_fk REFERENCES filial (id)
  43.         ON DELETE RESTRICT ON UPDATE CASCADE,
  44.     id_vid_strah INTEGER NOT NULL CONSTRAINT dogovor_vidstrah_fk REFERENCES vid_strah(id)
  45.         ON DELETE RESTRICT ON UPDATE CASCADE,
  46.     agent_id INTEGER CONSTRAINT dogovor_agent_fk REFERENCES agent (id)
  47.         ON DELETE RESTRICT ON UPDATE CASCADE,
  48.     client_id INTEGER NOT NULL CONSTRAINT dogovor_client_fk REFERENCES client(id)
  49.         ON DELETE CASCADE ON UPDATE CASCADE
  50. );
  51.  
  52. CREATE ROLE administrators LOGIN PASSWORD '1' INHERIT;
  53. GRANT USAGE ON SCHEMA company TO administrators;
  54. GRANT SELECT, INSERT, UPDATE, DELETE, TRUNCATE ON ALL TABLES IN SCHEMA company to administrators;
  55. GRANT administrators TO bob1;
  56.  
  57. CREATE ROLE USERS LOGIN PASSWORD '1';
  58. CREATE ROLE user1 LOGIN PASSWORD '1';
  59. GRANT USERS to user1;
  60. GRANT USAGE ON SCHEMA company TO USERS;
  61. GRANT SELECT ON company.agent, company.client, company.dogovor, company.filial, company.vid_strah TO USERS;
  62. GRANT SELECT ON agents_info TO USERS;
  63. GRANT SELECT ON dogovors_info TO USERS;
  64.  
  65. SELECT a.last_name, a.first_name, d.date_of_reg FROM dogovor AS d
  66. JOIN agent AS a ON a.id = d.agent_id WHERE (date_of_reg BETWEEN current_date - '30 days'::interval AND current_date) AND (a.id = 1);
  67.  
  68. CREATE OR REPLACE VIEW agents_info AS
  69.     SELECT a.last_name, a.first_name, a.middle_name, a.phone AS agent_phone, f.name AS filial_name, f.address AS filal_address, f.phone AS filial_phone
  70.     FROM agent AS a JOIN filial AS f ON a.filial_id = f.id ORDER BY a.last_name;
  71.  
  72. CREATE OR REPLACE VIEW dogovors_info AS
  73.     SELECT c.last_name AS client_lastname,
  74.        c.first_name AS client_name,
  75.        a.last_name AS agent_lastname,
  76.        a.first_name AS agent_name,
  77.        f.name AS filial_name,
  78.        f.address AS filial_address,
  79.        v.name AS vid_strah,
  80.        v.tarif_stav,
  81.        d.date_of_reg
  82.     FROM dogovor AS d
  83.     JOIN filial AS f ON d.id_filial = f.id
  84.     JOIN vid_strah AS v ON d.id_vid_strah = v.id
  85.     JOIN agent AS a ON d.agent_id = a.id
  86.     JOIN client AS c ON d.client_id = c.id ORDER BY d.no;
  87.  
  88. INSERT INTO vid_strah (name, tarif_stav) VALUES ('Страхование автотранспорта от угона', 2);
  89. INSERT INTO vid_strah (name, tarif_stav) VALUES ('Страхование домашнего имущества', 1);
  90. INSERT INTO vid_strah (name, tarif_stav) VALUES ('Добровольное медицинское страхование', 2);
  91.  
  92. INSERT INTO client (last_name, first_name, middle_name, address, phone) VALUES ('Lorem', 'Ipsum', 'Dolor', 'Kirov', '+79999999999');
  93.  
  94. INSERT INTO filial (id, name, address, phone) VALUES (110 ,'filial 1_1', 'Moscow', '+74959000000');
  95. INSERT INTO filial (id, name, address, phone) VALUES (120, 'filial 1_2', 'Moscow', '+74959001000');
  96. INSERT INTO filial (id, name, address, phone) VALUES (130, 'filial 1_3', 'Moscow', '+74959002000');
  97. INSERT INTO filial (id, name, address, phone) VALUES (210, 'filial 2_1', 'SPb', '+77009001000');
  98. INSERT INTO filial (id, name, address, phone) VALUES (310, 'filial 3_1', 'Kirov', '+79539487019');
  99.  
  100. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('130', 'Mathelon', 'Darius', 'Daveench', '+73971339107');
  101. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('130', 'Beardwood', 'Judd', null, '+73851885338');
  102. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Gouldeby', 'Lea', null, '+76163073411');
  103. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Franzonello', 'Norrie', null, '+71334264669');
  104. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('210', 'Povey', 'Anny', 'Ardeench', '+74552909505');
  105. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Olufsen', 'Joannes', 'Camilech', '+78247515982');
  106. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('120', 'Cardillo', 'Gasparo', null, '+76780097614');
  107. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Blaymires', 'Hermon', 'Berthach', '+79841679422');
  108. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('210', 'Pedrazzi', 'Di', 'Nicolettech', '+79258728872');
  109. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('210', 'Glavis', 'Lulita', 'Luisech', '+74344154512');
  110. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Noyes', 'Alanson', null, '+77513625483');
  111. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Benesevich', 'Gabbi', 'Byranch', '+72755135920');
  112. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Armiger', 'Augusta', 'Cchaddiech', '+75997818286');
  113. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Metrick', 'Padget', null, '+70004144130');
  114. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('110', 'Viscovi', 'Shaw', 'Gregch', '+75616397794');
  115. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Mosey', 'Britney', 'Gillesch', '+71478952650');
  116. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('210', 'Feechum', 'Serena', 'Maddich', '+74073231360');
  117. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('210', 'Farrington', 'Neda', 'Jacklynch', '+77291005091');
  118. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('210', 'Mableson', 'Bevvy', 'Kevanch', '+79206848088');
  119. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Whetland', 'Isabeau', null, '+78024714722');
  120. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Kleinerman', 'Rodina', 'Landch', '+78634286797');
  121. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('110', 'Wiggin', 'Samaria', 'Galench', '+79333405221');
  122. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('120', 'Chrismas', 'Alysa', 'Crawfordch', '+75244534213');
  123. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('130', 'Sterry', 'Jori', null, '+78117771555');
  124. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Gibard', 'Dallas', 'Luchoch', '+77079449623');
  125. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('110', 'Nasi', 'Guglielma', null, '+71608543094');
  126. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Gleder', 'Holt', 'Ravich', '+76018479906');
  127. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Alfonzo', 'Prince', null, '+75817092551');
  128. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('120', 'Hassell', 'Emile', 'Creightch', '+74281376833');
  129. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('130', 'Wiskar', 'Mitchell', 'Bartch', '+70478582391');
  130. insert into agent (filial_id, last_name, first_name, middle_name, phone) values ('310', 'Cecchi', 'Nadean', 'Olinch', '+71148159242');
  131.  
  132. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  133. VALUES ('2022-05-11'::DATE, 300000, 310, 1, 1, 1);
  134. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  135. VALUES ('2022-05-10'::DATE, 300000, 310, 2, 1, 1);
  136. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  137. VALUES ('2022-05-10'::DATE, 300000, 310, 3, 1, 1);
  138. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  139. VALUES ('2022-04-20'::DATE, 300000, 310, 1, 1, 1);
  140. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  141. VALUES ('2022-02-21'::DATE, 300000, 310, 2, 1, 1);
  142. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  143. VALUES ('2022-05-05'::DATE, 300000, 310, 3, 1, 1);
  144. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  145. VALUES ('2022-04-19'::DATE, 300000, 310, 1, 1, 1);
  146.  
  147. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  148. VALUES ('2022-04-19'::DATE, 300000, 310, 2, 2, 1);
  149. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  150. VALUES ('2021-01-01'::DATE, 300000, 310, 2, 3, 1);
  151. INSERT INTO dogovor (date_of_reg, strah_sum, id_filial, id_vid_strah, agent_id, client_id)
  152. VALUES ('2022-05-01'::DATE, 300000, 310, 3, 5, 1);
  153.  
  154.  
  155.  
  156.  
  157.  
Add Comment
Please, Sign In to add comment