Advertisement
Guest User

Untitled

a guest
Oct 17th, 2018
288
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. zad. 3
  2.  
  3. INSERT INTO sklep.producenci
  4. VALUES ('1', 'TIMEX', 'timex@gmail.com', '509847594'),
  5. ('2', 'TIBIS', 'tibis@gmail.com', '854854689'),
  6. ('3', 'GROMEX', 'gromex@gmail.com', '256985453'),
  7. ('4', 'JORDAN', 'jordan@gmail.com', '512468597'),
  8. ('5', 'PASTOL', 'pastol@gmail.com', '586521354'),
  9. ('6', 'GUCCI', 'gucci@gmail.com', '654235652'),
  10. ('7', 'MIGOS', 'migos@gmail.com', '685245958'),
  11. ('8', 'MACHINE', 'machine@gmail.com', '698523654'),
  12. ('9', 'FLORIA', 'floria@gmail.com', '754256896'),
  13. ('10', 'MAGICALA', 'magicala@gmail.com', '586523654')
  14.  
  15. INSERT INTO sklep.produkty
  16. VALUES ('1', 'Zegarek', 50.40, '1'),
  17. ('2', 'Burger wołowy', 12.50, '2'),
  18. ('3', 'Blachotrapez', 8.40, '3'),
  19. ('4', 'Piłka', 100.30, '4'),
  20. ('5', 'Chleb razowy', 2.70, '5'),
  21. ('6', 'Plecak', 250, '6'),
  22. ('7', 'Dres sportowy', 400, '7'),
  23. ('8', 'Kawa rozpuszczalna', 15.50, '8'),
  24. ('9', 'Panel podłogowy', 80, '9'),
  25. ('10', 'Krzesło', 100, '10')
  26.  
  27. INSERT INTO sklep.zamowienia
  28. VALUES ('1', '1', '1', 1),
  29. ('2', '2', '2', 3),
  30. ('3', '3', '3', 2),
  31. ('4', '4', '4', 1),
  32. ('5', '5', '4', 3),
  33. ('6', '6', '4', 5),
  34. ('7', '7', '7', 1),
  35. ('8', '8', '2', 4),
  36. ('9', '9', '2', 3),
  37. ('10', '10', '10', 1),
  38. ('11', '1', '1', 1),
  39. ('12', '2', '2', 2),
  40. ('13', '3', '3', 3),
  41. ('14', '4', '4', 2),
  42. ('15', '5', '5', 2),
  43. ('16', '6', '6', 2),
  44. ('17', '7', '7', 2),
  45. ('18', '8', '8', 2),
  46. ('19', '9', '9', 1),
  47. ('20', '10', '10', 3)
  48.  
  49. zad. 7-9
  50. select pg_terminate_backend(pid) from pg_stat_activity where datname='s287060';
  51.  
  52. drop database s287060
  53.  
  54. alter database backup_287060
  55. rename to s287060
  56.  
  57. zad. 10
  58.  
  59. a)
  60. select pi.nazwa_producenta producent, sum(zam.ilosc_produktow) liczba_zamowien, sum(zam.ilosc_produktow)*py.cena wartosc_zamowienia from sklep.producenci pi
  61. join sklep.zamowienia zam on zam.id_producenta = pi.id_producenta
  62. join sklep.produkty py on zam.id_produktu = py.id_produktu
  63. group by pi.nazwa_producenta, py.cena
  64. b)
  65. select py.nazwa_produktu produkt, count(zam.id_produktu) from sklep.produkty py
  66. join sklep.zamowienia zam on zam.id_producenta = py.id_producenta
  67. group by py.nazwa_produktu
  68. c)
  69. select * from sklep.produkty
  70. natural join sklep.zamowienia
  71. d)
  72. alter table sklep.zamowienia
  73. add column data date
  74.  
  75. update sklep.zamowienia
  76. set data = '2018-09-20'
  77. where id_zamowienia > 0
  78.  
  79. update sklep.zamowienia
  80. set data = '2018-09-28'
  81. where id_zamowienia > 10
  82.  
  83. update sklep.zamowienia
  84. set data = '2018-01-20'
  85. where id_zamowienia > 15
  86. e)
  87. select * from sklep.zamowienia where DATE_PART('month', data) = 1
  88. f)
  89. select * from
  90. (
  91. select to_char(data, 'day') as dzien_tygodnia, count(*) as ilosc_zamowien
  92. from sklep.zamowienia
  93. group by to_char(data, 'day')
  94. )z
  95. order by z.ilosc_zamowien desc
  96. g)
  97. select * from
  98. (
  99. select p.id_produktu, p.nazwa_produktu, count(*) as ilosc_zamowionych from sklep.zamowienia z
  100. join sklep.produkty p on z.id_produktu = p.id_produktu
  101. group by p.id_produktu, p.nazwa_produktu
  102. )z
  103. order by z.ilosc_zamowionych desc
  104.  
  105. zad. 11
  106.  
  107. a)
  108. select concat('Produkt ', p.nazwa_produktu, ', którego producentem jest ', pr.nazwa_producenta,
  109. ', zamówiono ', count(z.*),' razy') as opis
  110. from sklep.zamowienia z
  111. join sklep.produkty p on p.id_produktu = z.id_produktu
  112. join sklep.producenci pr on pr.id_producenta = z.id_producenta
  113. group by p.nazwa_produktu, pr.nazwa_producenta
  114. order by count(z.*) desc
  115.  
  116. b)
  117. select * from (select zam.id_zamowienia, py.cena*sum(zam.ilosc_produktow) cena from sklep.zamowienia zam
  118. join sklep.produkty py on zam.id_produktu = py.id_produktu
  119. group by zam.id_zamowienia, py.cena
  120. order by cena
  121. offset 3) q
  122. order by cena desc
  123.  
  124. c)
  125. create table sklep.klienci
  126. (id_klienta bigint PRIMARY KEY, email varchar, telefon varchar)
  127.  
  128. alter table sklep.zamowienia
  129. add column id_klienta bigint
  130.  
  131. alter table sklep.zamowienia
  132. add foreign key (id_klienta)
  133. references sklep.klienci(id_klienta)
  134. d)
  135.  
  136. insert into sklep.klienci values
  137. ('1', 'dabrowski@gmail.com', '758745698'),
  138. ('2', 'stojanowski@gmail.com', '645879658'),
  139. ('3', 'szymierski@gmail.com', '548595687'),
  140. ('4', 'dabek@gmail.com', '548521365'),
  141. ('5', 'naklicki@gmail.com', '568598745'),
  142. ('6', 'janowski@gmail.com', '654858959'),
  143. ('7', 'wojciechowski@gmail.com', '652357458'),
  144. ('8', 'rozsadny@gmail.com', '546859532'),
  145. ('9', 'kijek@gmail.com', '655875452'),
  146. ('10', 'debowski@gmail.com', '545896587')
  147.  
  148. e)
  149. select k.*, p.nazwa_produktu, count(z.*) as ilość_sztuk, sum(p.cena) as wartość_zamówienia from sklep.zamowienia z
  150. natural join sklep.klienci k
  151. join sklep.produkty p on p.id_produktu = z.id_produktu
  152. join sklep.producenci pr on pr.id_producenta = z.id_producenta
  153. group by k.id_klienta, k.email, k.telefon, p.nazwa_produktu
  154.  
  155. f)
  156. select
  157. case when q.ilość_zamówień =
  158. (
  159. select count(z.*) as ilość_zamówień from sklep.zamowienia z
  160. natural join sklep.klienci k
  161. group by k.id_klienta
  162. order by 1 asc
  163. limit 1
  164. )
  165. then 'NAJRZADZIEJ ZAMAWIAJĄCY'
  166. when q.ilość_zamówień =
  167. (
  168. select count(z.*) as ilość_zamówień from sklep.zamowienia z
  169. natural join sklep.klienci k
  170. group by k.id_klienta
  171. order by 1 desc
  172. limit 1
  173. )
  174. then 'NAJCZĘŚCIEJ ZAMAWIAJĄCY'
  175. else null end as info,
  176. * from
  177. (
  178. select k.*, count(z.*) as ilość_zamówień from sklep.zamowienia z
  179. natural join sklep.klienci k
  180. group by k.id_klienta, k.email, k.telefon
  181. )q
  182. group by q.id_klienta, q.email, q.telefon, q.ilość_zamówień
  183.  
  184. g)
  185. delete from sklep.produkty
  186. where id_produktu in (
  187. select id_produktu from sklep.produkty p
  188. where id_produktu not in (
  189. select distinct z.id_produktu from sklep.zamowienia z
  190. left join sklep.produkty p on p.id_produktu = z.id_produktu
  191. ))
  192.  
  193. 12.
  194. a)
  195. CREATE TABLE sklep.numer (liczba int CONSTRAINT liczba_CHK CHECK (liczba < 10000))
  196. b)
  197. CREATE SEQUENCE liczba_seq START 100 minvalue 0 maxvalue 125 increment by 5 CYCLE
  198. c)
  199. INSERT INTO sklep.numer VALUES
  200. (nextval('liczba_seq')),
  201. (nextval('liczba_seq')),
  202. (nextval('liczba_seq')),
  203. (nextval('liczba_seq')),
  204. (nextval('liczba_seq')),
  205. (nextval('liczba_seq')),
  206. (nextval('liczba_seq'))
  207. d)
  208. ALTER SEQUENCE liczba_seq increment by 6
  209. e)
  210. SELECT last_value FROM liczba_seq;
  211. f)
  212. SELECT last_value, last_value + increment_by FROM liczba_seq;
  213. g)
  214. DROP SEQUENCE liczba_seq
  215. d)
  216.  
  217. 13.
  218. a)
  219. SELECT u.usename AS "Role name",
  220.   CASE WHEN u.usesuper AND u.usecreatedb THEN CAST('superuser, create
  221. database' AS pg_catalog.text)
  222.        WHEN u.usesuper THEN CAST('superuser' AS pg_catalog.text)
  223.        WHEN u.usecreatedb THEN CAST('create database' AS
  224. pg_catalog.text)
  225.        ELSE CAST('' AS pg_catalog.text)
  226.   END AS "Attributes"
  227. FROM pg_catalog.pg_user u
  228. ORDER BY 1;
  229. b)
  230. create user Superuser287060 SUPERUSER
  231.  
  232. create user guest287060
  233. grant select on all tables in schema public, firma, sklep to guest287060
  234. c)
  235. alter user Superuser287060
  236. rename to student287060
  237. REVOKE ALL PRIVILEGES ON DATABASE s287060 FROM student287060
  238. grant select on all tables in schema public, firma, sklep to student287060
  239.  
  240. REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public, firma, sklep FROM guest287060
  241. DROP USER guest287060
  242.  
  243. 14.
  244. a)
  245. BEGIN;
  246. UPDATE sklep.produkty set cena = cena + 10;
  247. COMMIT;
  248. b)
  249. BEGIN;
  250. UPDATE sklep.produkty set cena = cena + 0.1*cena where id_produktu = 3;
  251. SAVEPOINT S1;
  252. UPDATE sklep.produkty set cena = cena*1.25;
  253. SAVEPOINT S2;
  254. delete from sklep.klienci where id_klienta =
  255. (select id_klienta from sklep.zamowienia z
  256. natural join sklep.klienci k
  257. group by id_klienta
  258. order by count(z.*) desc
  259. limit 1);
  260. ROLLBACK TO S1;
  261. ROLLBACK TO S2;
  262. ROLLBACK;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement