Advertisement
AntoSVK

DS - cv2

Oct 22nd, 2015
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.47 KB | None | 0 0
  1. CREATE TABLE Klient
  2. (
  3.   r_cislo  CHAR(11) NOT NULL,
  4.   jmeno VARCHAR(20) NOT NULL,
  5.   ulice VARCHAR(20),
  6.   mesto VARCHAR(20),
  7.   PRIMARY KEY (r_cislo)
  8. );
  9. CREATE UNIQUE INDEX Iklient ON  Klient (r_cislo);
  10.  
  11. CREATE TABLE Pobocka
  12. (
  13.   nazev VARCHAR(20) NOT NULL,
  14.   jmeni INTEGER,
  15.   PRIMARY KEY (nazev)
  16. );
  17. CREATE UNIQUE INDEX Ipobocka ON Pobocka (nazev);
  18.  
  19. CREATE TABLE Ucet
  20. (
  21.   c_uctu  INTEGER NOT NULL,
  22.   stav DECIMAL(10,2),
  23.   r_cislo CHAR(11) NOT NULL,
  24.   pobocka VARCHAR(20),
  25.   PRIMARY KEY (c_uctu),
  26.   FOREIGN KEY (r_cislo) REFERENCES Klient ON DELETE CASCADE,
  27.   FOREIGN KEY (pobocka) REFERENCES Pobocka
  28. );
  29. CREATE UNIQUE INDEX Iucet ON  Ucet (c_uctu);
  30.  
  31. CREATE TABLE Transakce
  32. (
  33.   c_uctu  INTEGER NOT NULL,
  34.   c_transakce INTEGER NOT NULL,
  35.   datum DATETIME,
  36.   castka DECIMAL(7,2),
  37.   PRIMARY KEY (c_uctu, c_transakce),
  38.   FOREIGN KEY (c_uctu) REFERENCES Ucet ON DELETE CASCADE
  39. );
  40. CREATE UNIQUE INDEX Itransakce ON Transakce (c_uctu, c_transakce);
  41.  
  42. INSERT INTO Klient
  43. VALUES('440726/0672','Jan Novák','Cejl 8','Brno');
  44. INSERT INTO Klient
  45. VALUES('530610/4532','Petr Veselý','Podzimní 28','Brno');
  46. INSERT INTO Klient
  47. VALUES('601001/2218','Ivan Zeman ','Cejl 8','Brno');
  48. INSERT INTO Klient
  49. VALUES('510230/048','Pavel Tomek','Tomkova 34','Brno');
  50. INSERT INTO Klient
  51. VALUES('580807/9638','Josef Mádr','Svatoplukova 15','Brno');
  52. INSERT INTO Klient
  53. VALUES('625622/6249','Jana Malá','Brněnská 56','Vyškov');
  54.  
  55. INSERT INTO Pobocka
  56. VALUES('Jánská',10000000);
  57. INSERT INTO Pobocka
  58. VALUES('Palackého',5000000);
  59.  
  60. INSERT INTO Ucet
  61. VALUES(4320286,52000,'440726/0672','Jánská');
  62. INSERT INTO Ucet
  63. VALUES(2348531,10000,'530610/4532','Jánská');
  64. INSERT INTO Ucet
  65. VALUES(1182648,10853,'530610/4532','Palackého');
  66. INSERT INTO Ucet
  67. VALUES(2075752,26350,'440726/0672','Palackého');
  68. INSERT INTO Ucet
  69. VALUES(98123245,52000, '625622/6249','Jánská');
  70.  
  71. INSERT INTO Transakce
  72. VALUES(4320286,1,'19981010',3000);
  73. INSERT INTO Transakce
  74. VALUES(4320286,2,'19981012',-5000);
  75. INSERT INTO Transakce
  76. VALUES(2075752,1,'19981014',-2000);
  77. INSERT INTO Transakce
  78. VALUES(2075752,2,'19981014',10000);
  79.  
  80.  
  81. DROP TABLE Transakce
  82. DROP TABLE Ucet
  83. DROP TABLE Pobocka
  84. DROP TABLE Klient
  85.  
  86. CREATE TABLE Typ_karty(
  87. typ_karty_id INT IDENTITY(1,1),
  88. nazov VARCHAR(20)
  89. );
  90. GO
  91.  
  92. INSERT INTO Typ_karty VALUES ('Kreditna karta')
  93. INSERT INTO Typ_karty VALUES ('Debetna karta')
  94. GO
  95.  
  96. SELECT * FROM platebni_karta
  97. DROP TABLE platebni_karta
  98. SELECT * FROM ucet
  99.  
  100. CREATE TABLE Platebni_karta(
  101. c_karty VARCHAR(20) NOT NULL,
  102. typ_karty_id INT NOT NULL,
  103. c_uctu INTEGER NOT NULL,
  104. platnost DATE NOT NULL,
  105. PRIMARY KEY (c_karty),
  106. FOREIGN KEY (c_uctu) REFERENCES Ucet ON DELETE CASCADE
  107. );
  108. GO
  109.  
  110. INSERT INTO Platebni_karta VALUES (4916543140217,2,4320286,'2016-01-31')
  111. GO
  112. ------------------------------------------------------------------------------
  113. ------------------------------------------------------------------------------
  114. ------------------------------------------------------------------------------
  115. ------------------------------------------------------------------------------
  116. SELECT DISTINCT mesto FROM klient
  117. GO
  118.  
  119. SELECT DISTINCT k.*
  120. FROM klient k, ucet u
  121. WHERE k.r_cislo=u.r_cislo
  122. AND u.pobocka='Jásnká'
  123. GO
  124.  
  125. SELECT k.jmeno, k.r_cislo, COUNT(*) AS p, SUM(stav) AS c
  126. FROM klient k, ucet u
  127. WHERE k.r_cislo=u.r_cislo
  128. GROUP BY k.r_cislo, k.jmeno
  129. GO
  130.  
  131. SELECT COUNT(*) AS pocet
  132. FROM klient
  133. GO
  134. SELECT * FROM klient
  135. GO
  136.  
  137. --Ktorí klienti majú na účtoch viac ako 50 000kč?--
  138. SELECT k.jmeno, k.r_cislo, SUM(stav) AS celkom
  139. FROM klient k, ucet u
  140. WHERE k.r_cislo=u.r_cislo
  141. GROUP BY k.r_cislo, k.jmeno
  142. HAVING SUM(stav)>50000
  143. GO
  144.  
  145. --Ktorí klienti majú účet len u pobočky Jánská?--
  146. SELECT DISTINCT k.*
  147. FROM klient k, ucet u
  148. WHERE k.r_cislo=u.r_cislo AND u.pobocka='Jánská' AND
  149. NOT EXISTS (SELECT * FROM ucet u WHERE k.r_cislo=u.r_cislo AND u.pobocka<>'Jánská')
  150. GO
  151.  
  152. --Samostatná úloha--
  153. --Ktorí klienti z Brna majú na svojich účtoch viac ako 20 000Kč celkovo?
  154. --Ktorí klienti vlastnia viac ako jeden účet a koľko ich je?
  155.  
  156. --1. uloha--
  157. SELECT DISTINCT k.*
  158. FROM klient k, ucet u
  159. WHERE u.r_cislo=k.r_cislo AND k.mesto='Brno' AND u.stav>20000
  160. ORDER BY k.jmeno
  161. GO
  162. SELECT DISTINCT k.jmeno, SUM(u.stav) AS celkovo
  163. FROM klient k, ucet u
  164. WHERE k.r_cislo=u.r_cislo AND k.mesto='Brno'
  165. GROUP BY k.jmeno
  166. HAVING SUM(u.stav)>20000
  167. GO
  168. --2.uloha--
  169. SELECT k.jmeno, COUNT(u.c_uctu) AS pocet FROM klient k, ucet u
  170. WHERE k.r_cislo=u.r_cislo
  171. GROUP BY jmeno
  172. HAVING COUNT(u.c_uctu)>1
  173. GO
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement