Advertisement
Guest User

Bazy danych

a guest
Dec 6th, 2019
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.93 KB | None | 0 0
  1. create database TanieButy;
  2. use TanieButy;
  3.  
  4. create table pracownicy (
  5. id_pracownika int AUTO_INCREMENT PRIMARY KEY,
  6. imie varchar(30),
  7. nazwisko varchar(30),
  8. aktywny bool
  9. );
  10.  
  11. insert into pracownicy (id_pracownika,imie,nazwisko,aktywny) values
  12. (1, 'Lucjan', 'Kolebka', false),
  13. (2, 'Marcin', 'Warzocha', true),
  14. (3, 'Konstanty', 'Stankiewicz', false),
  15. (4, 'Gracjan', 'Roztocki', true),
  16. (5, 'Fiodor', 'Mazur', true),
  17. (6, 'Pawel', 'Glaz', false);
  18.  
  19. create table klienci (
  20. id_klient int not null,
  21. login varchar(50) not null,
  22. haslo varchar(50) not null,
  23. adres varchar (200),
  24. telefon varchar(9),
  25. ostatnie_logowanie datetime(0),
  26. primary key(id_klient)
  27. );
  28.  
  29. insert into klienci (id_klient, login, haslo, adres, telefon, ostatnie_logowanie) values
  30. (1,'ania22','qwerty','Lublin','513724517','2019-11-21 21:23:12'),
  31. (2,'lolita23','qwerty','Lublin','513724517','2019-11-21 22:23:12'),
  32. (3,'krzysztof99','qwerty','Lublin','513724517','2019-11-21 21:23:12'),
  33. (4,'jacek233','qwerty','Warszawa','513724517','2016-11-21 21:23:12'),
  34. (5,'pawel65','qwerty','Lublin','513724517','2019-11-21 21:23:12'),
  35. (6,'robert44','qwerty','Lublin','513724517','2019-02-21 21:23:12');
  36.  
  37. create table produkt (
  38. id_produktu int AUTO_INCREMENT,
  39. nazwa_produktu varchar(200),
  40. numer_katalogowy int,
  41. ilosc_sztuk int,
  42. cena dec(6,2),
  43. primary key(id_produktu)
  44. );
  45.  
  46. insert into produkt(id_produktu,nazwa_produktu,numer_katalogowy,ilosc_sztuk,cena) values
  47. (1,'Nike',3221,4,211.99),
  48. (2,'Reebok',3232,12,400.00),
  49. (3,'Puma',2312,22,399.99),
  50. (4,'New Balance',4323,0,299.99),
  51. (5,'Jordan',7765,2,549.99),
  52. (6,'Kappa',3422,50,99.99),
  53. (7,'Lacoste',4533,25,49.99),
  54. (8,'Yezzy',3234,1,499.99),
  55. (9,'Zara',8859,130,130.00),
  56. (10,'Kubota',6434,0,129.99)
  57. ;
  58.  
  59. create table zamowienie (
  60. id_zamowienia int auto_increment,
  61. id_klient int,
  62. id_produktu int,
  63. data_kupna date,
  64. id_pracownika int,
  65. primary key(id_zamowienia),
  66. foreign key(id_klient) references klienci(id_klient),
  67. foreign key(id_produktu) references produkt(id_produktu),
  68. foreign key(id_pracownika) references pracownicy(id_pracownika)
  69. );
  70.  
  71. insert into zamowienie(id_zamowienia,id_klient,id_produktu,data_kupna,id_pracownika) values
  72. (16,3,2,'2015-02-19',1),
  73. (2,5,6,'2019-12-01',2),
  74. (3,2,9,'2018-11-21',4),
  75. (4,1,1,'2019-04-13',4),
  76. (5,2,4,'2019-06-16',5),
  77. (6,4,3,'2019-02-18',3),
  78. (7,4,10,'2019-12-03',1),
  79. (8,5,2,'2019-09-06',2),
  80. (9,1,5,'2019-05-06',4),
  81. (10,4,4,'2019-03-01',5),
  82. (11,3,1,'2019-11-19',1),
  83. (15,3,3,'2019-09-22',1),
  84. (13,5,5,'2019-10-25',5),
  85. (14,6,1,'2018-12-19',5);
  86.  
  87.  
  88. create table reklamacje (
  89. id_reklamacji int AUTO_INCREMENT PRIMARY KEY,
  90. id_zamowienia int REFERENCES zamowienie(id_zamowienia)
  91. ON UPDATE CASCADE ON DELETE NO ACTION,
  92. powod varchar(255),
  93. data_zgloszenia date,
  94. data_realizacji date,
  95. wynik bool);
  96.  
  97. insert into reklamacje(id_reklamacji,id_zamowienia,powod,data_zgloszenia,data_realizacji,wynik) VALUES
  98. (1,4,'Wada fabryczna','2019-04-24','2019-05-02',true),
  99. (2,5,'Pekniete szwy','2019-10-11','2019-10-23',false),
  100. (3,6,'Brak logo','2019-02-19','2019-02-25',true),
  101. (4,9,'Rozpuszczony klej','2019-06-12','2019-06-20',false),
  102. (5,10,'Brak uszkodzen','2019-04-01','2019-04-13',false),
  103. (6,16,'Obtarcia','2016-02-04','2019-02-12',false);
  104.  
  105.  
  106.  
  107. -- 1.Wyświetl login najstarszego klienta, produkt, który zakupił oraz datę zakupu.
  108. SELECT login, nazwa_produktu, MIN(data_kupna) as 'Data zakupu'
  109. FROM klienci
  110. JOIN zamowienie USING (id_klient)
  111. JOIN produkt USING (id_produktu);
  112.  
  113. -- 2.Wyświetl łączną kwotę wydaną przez poszczeglnych klientów
  114. SELECT login, SUM(cena) as 'Wydano lacznie' FROM klienci
  115. JOIN zamowienie USING (id_klient)
  116. JOIN produkt USING (id_produktu)
  117. GROUP BY login
  118. ORDER BY SUM(cena) DESC;
  119.  
  120. -- 3.Napisz zapytanie które wyświetli loginy osób (bez duplikatów), które dokonały zamówień u aktualnie dostępnych pracowników
  121. SELECT login FROM klienci
  122. JOIN zamowienie USING (id_klient)
  123. JOIN pracownicy USING (id_pracownika)
  124. WHERE pracownicy.aktywny='true'
  125. GROUP BY login;
  126.  
  127. -- 4.Napisz zapytanie, które wyświetli czas do końca gwarancji poszczególnych produktów każdego urzytkownika
  128.  
  129. SELECT login,nazwa_produktu, datediff(date_add(data_kupna, interval 2 year), CURDATE()) AS 'Dni do końca gwarancji'
  130. FROM klienci
  131. JOIN zamowienie USING (id_klient)
  132. JOIN produkt USING (id_produktu);
  133.  
  134. -- 5.Napisz zapytanie, które wyświetli produkty, których ilość jest mniejsza niż 5.
  135.  
  136. SELECT nazwa_produktu, ilosc_sztuk FROM produkt
  137. WHERE ilosc_sztuk<5;
  138.  
  139. -- 6.Napisz zapytanie, które wyświetli liczbę zamówień zrealizowanych przez klientposzczególnych klientów
  140.  
  141. SELECT login, COUNT(id_zamowienia) AS 'Ilosc zamowien' FROM klienci
  142. JOIN zamowienie USING (id_klient)
  143. GROUP BY login
  144. HAVING COUNT(id_zamowienia)>1;
  145.  
  146. -- 7.Napisz zapytanie, które wyświetli klientów, którzy kupili produkt nike przed 11.11.2019.
  147.  
  148. SELECT login, nazwa_produktu FROM klienci
  149. JOIN zamowienie USING (id_klient)
  150. JOIN produkt USING (id_produktu)
  151. WHERE nazwa_produktu='Nike' AND data_kupna<'2019-11-11';
  152.  
  153. -- 8.Dodaj kolumnę email do tabeli klienci.
  154.  
  155. ALTER TABLE klienci
  156. ADD email varchar(30);
  157.  
  158. -- 9.Napisz zapytanie, które wyświetli reklamacje przyjete między 06.06.2019 a 06.10.2019
  159.  
  160. SELECT * from reklamacje
  161. WHERE data_zgloszenia between '2019-06-06' and '2019-10-06';
  162.  
  163. -- 10.Napisz zapytanie, które wyświetli średnią kwotę wydawaną przez klientów
  164.  
  165. SELECT avg(cena) AS 'Srednia wydana kwota' from produkt
  166. JOIN zamowienie USING (id_produktu);
  167.  
  168. -- 11.Napisz zapytanie, które zwróci ciąg: <login> kupil <nazwa_produktu> <data_kupna>.
  169.  
  170. SELECT CONCAT(login,' kupil ',nazwa_produktu,' ',data_kupna) AS ''
  171. FROM klienci
  172. JOIN zamowienie USING (id_klient)
  173. JOIN produkt USING (id_produktu);
  174.  
  175. -- 12.Napisz zapytanie, które wyświetli liczbę zgłazanych reklamacji przez każdego klienta.
  176.  
  177. SELECT login, count(id_reklamacji) AS 'Liczba reklamacji' from klienci
  178. JOIN zamowienie USING (id_klient)
  179. JOIN reklamacje USING (id_zamowienia)
  180. GROUP BY id_reklamacji HAVING COUNT(id_reklamacji)
  181. ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement