Advertisement
Guest User

Untitled

a guest
Apr 21st, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE TABLE customer (
  2.     customer_id int  NOT NULL,
  3.     name varchar(20)  NOT NULL,
  4.     email varchar(30)  NOT NULL,
  5.     CONSTRAINT customer_pk PRIMARY KEY (customer_id),
  6.     CONSTRAINT customer_id_check CHECK (customer_id > 0)
  7. );
  8.  
  9. CREATE TABLE dev_group (
  10.     leader_id int  NOT NULL,
  11.     group_id int  NOT NULL,
  12.     name char(20)  NOT NULL,
  13.     room int  NOT NULL,
  14.     CONSTRAINT dev_group_pk PRIMARY KEY (group_id),
  15.     CONSTRAINT leader_id_check CHECK (leader_id > 0)
  16. );
  17.  
  18.  
  19. CREATE TABLE worker (
  20.     name varchar(20)  NOT NULL,
  21.     worker_id int  NOT NULL,
  22.     CONSTRAINT worker_id PRIMARY KEY (worker_id)
  23. );
  24.  
  25. CREATE TABLE worker_updates (
  26.     worker_id int  NOT NULL,
  27.     group_id int  NOT NULL,
  28.     new_salary int  NOT NULL,
  29.     new_status char(20)  NOT NULL,
  30.     time_start date  NOT NULL,
  31.     time_end date,
  32.     CONSTRAINT worker_updates_pk PRIMARY KEY (worker_id,time_start),
  33.     CONSTRAINT worker_updates_dev_group FOREIGN KEY (group_id) REFERENCES dev_group (group_id),
  34.     CONSTRAINT worker_updates_worker FOREIGN KEY (worker_id) REFERENCES worker (worker_id),
  35.     CONSTRAINT time_check CHECK (time_end >= time_start)
  36. );
  37.  
  38.  
  39. CREATE TABLE product (
  40.     product_id int  NOT NULL,
  41.     product_name varchar(20)  NOT NULL,
  42.     price int  NOT NULL,
  43.     group_id int  NOT NULL,
  44.     CONSTRAINT product_pk PRIMARY KEY (product_id),
  45.     CONSTRAINT product_dev_group FOREIGN KEY (group_id) REFERENCES dev_group (group_id),
  46.     CONSTRAINT price_check CHECK (price > 0)
  47.  
  48. );
  49.  
  50.  
  51. CREATE TABLE orders (
  52.     order_id int  NOT NULL,
  53.     customer_id int  NOT NULL,
  54.     product_id int  NOT NULL,
  55.     time timestamp  NOT NULL,
  56.     CONSTRAINT orders_pk PRIMARY KEY (order_id),
  57.     CONSTRAINT customer_order FOREIGN KEY (customer_id) REFERENCES customer (customer_id),
  58.     CONSTRAINT product_order FOREIGN KEY (product_id) REFERENCES product (product_id)
  59. );
  60.  
  61.  
  62. CREATE TABLE updates (
  63.     product_id int  NOT NULL,
  64.     changelog text  NOT NULL,
  65.     time date  NOT NULL,
  66.     update_id int  NOT NULL,
  67.     CONSTRAINT updates_pk PRIMARY KEY (update_id),
  68.     CONSTRAINT product_updates FOREIGN KEY (product_id) REFERENCES product (product_id),
  69.     CONSTRAINT update_id_check CHECK (update_id > 0)
  70. );
  71.  
  72.  
  73.  
  74. INSERT INTO worker (name, worker_id) VALUES ('Ivanov', 1);
  75. INSERT INTO worker (name, worker_id) VALUES ('Petrov', 2);
  76. INSERT INTO worker (name, worker_id) VALUES ('Sidorov', 3);
  77. INSERT INTO worker (name, worker_id) VALUES ('Nikolaev', 4);
  78. INSERT INTO worker (name, worker_id) VALUES ('Nonamov', 5);
  79.  
  80.  
  81. INSERT INTO customer (customer_id, name, email) VALUES (1, 'Petya', 'petya@mail.ru');
  82. INSERT INTO customer (customer_id, name, email) VALUES (2, 'Vanya', 'Vanya@mail.ru');
  83. INSERT INTO customer (customer_id, name, email) VALUES (3, 'Kolya', 'Kolya@mail.ru');
  84. INSERT INTO customer (customer_id, name, email) VALUES (4, 'Sanya', 'Sanya@mail.ru');
  85. INSERT INTO customer (customer_id, name, email) VALUES (5, 'Noname', 'Noname@mail.ru');
  86.  
  87.  
  88. INSERT INTO dev_group VALUES (1, 1, 'first-group', 1);
  89. INSERT INTO dev_group VALUES (4, 2, 'second-group', 2);
  90.  
  91. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (1, 1, 100000, 'good-worker', '2019/01/01');
  92. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (2, 1, 80000, 'good-worker', '2019/01/01');
  93. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (3, 1, 70000, 'good-worker', '2019/01/01');
  94. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (4, 2, 100000, 'good-worker', '2019/01/01');
  95. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (5, 2, 90000, 'good-worker', '2019/01/01');
  96.  
  97. UPDATE worker_updates SET time_end = '2019/02/01' where worker_id = 1;
  98. UPDATE worker_updates SET time_end = '2019/02/01' where worker_id = 2;
  99. UPDATE worker_updates SET time_end = '2019/02/01' where worker_id = 3;
  100. UPDATE worker_updates SET time_end = '2019/02/01' where worker_id = 4;
  101. UPDATE worker_updates SET time_end = '2019/02/01' where worker_id = 5;
  102.  
  103. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (1, 1, 110000, 'good-worker', '2019/02/01');
  104. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (2, 1, 60000, 'medium-worker', '2019/02/01');
  105. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (3, 1, 50000, 'medium-worker', '2019/02/01');
  106. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (4, 2, 110000, 'good-worker', '2019/02/01');
  107. INSERT INTO worker_updates (worker_id, group_id, new_salary, new_status, time_start) values (5, 2, 70000, 'medium-worker', '2019/02/01');
  108.  
  109.  
  110.  
  111. INSERT into product values (1, 'photoshop', 1000, 1);
  112. INSERT into product values (2, 'illustrator', 1500, 1);
  113. INSERT into product values (3, 'aftereffects', 2500, 1);
  114. INSERT into product values (4, 'premier', 1500, 2);
  115. INSERT into product values (5, 'acrobat', 1100, 2);
  116.  
  117.  
  118. INSERT into updates values (1, 'mvp', '2019/01/15', 1);
  119. INSERT into updates values (2, 'mvp', '2019/01/15', 2);
  120. INSERT into updates values (3, 'mvp', '2019/01/15', 3);
  121. INSERT into updates values (4, 'mvp', '2019/01/15', 4);
  122. INSERT into updates values (5, 'mvp', '2019/01/15', 5);
  123. INSERT into updates values (5, 'mvp2', '2019/01/15', 6);
  124.  
  125. INSERT into orders values (1, 1, 1, '2019/01/16');
  126. INSERT into orders values (2, 2, 2, '2019/01/17');
  127. INSERT into orders values (3, 3, 3, '2019/01/18');
  128. INSERT into orders values (4, 4, 4, '2019/01/19');
  129. INSERT into orders values (5, 5, 5, '2019/01/20');
  130. INSERT into orders values (6, 4, 5, '2019/01/20');
  131.  
  132. /* общая прибыль за месяц*/
  133. select sum(price)
  134. from orders inner join product on orders.product_id = product.product_id;
  135.  
  136. /* общие затраты на зарплату на текущий момент */
  137. select sum(new_salary)
  138. from worker_updates
  139. where time_end is null;
  140.  
  141. /* количество покупок */
  142. create view amount_of_orders as
  143.   select count(order_id)
  144.     from orders;
  145. select * from amount_of_orders;
  146.  
  147.  
  148. /* сумма покупок по каждому клиенту */
  149. create view sum_for_customer as
  150. select sum(price), customer_id
  151. from orders inner join product on orders.product_id = product.product_id
  152. group by customer_id;
  153. select * from sum_for_customer;
  154.  
  155.  
  156. /* количество покупок по каждому клиенту */
  157. select product_id, count(update_id)
  158. from updates
  159. group by product_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement