EnsarMeskovic

[T-SQL] Vjezba 7

May 1st, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.37 KB | None | 0 0
  1. --1
  2. USE master
  3. GO
  4. CREATE DATABASE IB150085
  5. ON ( NAME = IB150085_dat, FILENAME = 'C:\BP2\Data\IB150085.mdf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% )
  6. LOG ON ( NAME = IB150085_log, FILENAME = 'C:\BP2\Log\IB150085.ldf', SIZE = 2MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5% );
  7.  
  8. --2
  9. USE IB150085
  10. GO
  11. CREATE TABLE Kandidati
  12. (
  13.     KandidatID int IDENTITY(1,1) CONSTRAINT PK_Kandidat PRIMARY KEY,
  14.     Ime nvarchar(30) NOT NULL,
  15.     Prezime nvarchar(30) NOT NULL,
  16.     JMBG nvarchar(13) NOT NULL CONSTRAINT UQ_JMBG UNIQUE,
  17.     DatumRodjenja date NOT NULL,
  18.     MjestoRodjenja nvarchar(30) NULL,
  19.     Telefon nvarchar(20) NULL,
  20.     Email nvarchar(50) CONSTRAINT UQ_Email UNIQUE
  21. )
  22.  
  23. CREATE TABLE Testovi
  24. (
  25.     TestID int IDENTITY(1,1) CONSTRAINT PK_Test PRIMARY KEY,
  26.     Datum smalldatetime NOT NULL,
  27.     Naziv nvarchar(50) NOT NULL,
  28.     Oznaka nvarchar(10) NOT NULL CONSTRAINT UQ_Oznaka UNIQUE,
  29.     Oblast nvarchar(50) NOT NULL,
  30.     MaxBrojBodova smallint NOT NULL,
  31.     Opis nvarchar(250) NULL
  32. )
  33.  
  34. CREATE TABLE RezultatiTestova
  35. (
  36.     KandidatID int NOT NULL CONSTRAINT FK_RezultatiTestova_Kandidati FOREIGN KEY REFERENCES Kandidati (KandidatID),
  37.     TestID int NOT NULL CONSTRAINT FK_RezultatiTestova_Testovi FOREIGN KEY REFERENCES Testovi (TestID),
  38.     Polozio bit NOT NULL,
  39.     OsvojeniBodovi decimal(7,2) NOT NULL,
  40.     Napomena nvarchar(max),
  41.     PRIMARY KEY (KandidatID, TestID)
  42. )
  43.  
  44. CREATE TABLE Gradovi
  45. (
  46.     GradID int IDENTITY(1,1) CONSTRAINT PK_Grad PRIMARY KEY,
  47.     Naziv nvarchar(100) NOT NULL
  48. )
  49.  
  50. --3
  51. ALTER TABLE Kandidati
  52. ADD
  53. Adresa nvarchar(100) NULL,
  54. GradID int NULL CONSTRAINT FK_Kandidati_Gradovi FOREIGN KEY REFERENCES Gradovi (GradID)
  55.  
  56. --4
  57. INSERT INTO Kandidati (Ime, Prezime, JMBG, DatumRodjenja, MjestoRodjenja, Telefon, Email)
  58. SELECT TOP 10 T2.FirstName, T2.LastName, REPLACE(RIGHT(T1.rowguid, 13), '-', '0'), T1.ModifiedDate, T4.City, T5.PhoneNumber, T6.EmailAddress
  59. FROM AdventureWorks2014.Sales.Customer AS T1
  60.     JOIN AdventureWorks2014.Person.Person AS T2
  61.         ON T1.PersonID = T2.BusinessEntityID
  62.     JOIN AdventureWorks2014.Person.BusinessEntityAddress AS T3
  63.         ON T3.BusinessEntityID = T2.BusinessEntityID
  64.     JOIN AdventureWorks2014.Person.Address AS T4
  65.         ON T4.AddressID = T3.AddressID
  66.     JOIN AdventureWorks2014.Person.PersonPhone AS T5
  67.         ON T5.BusinessEntityID = T2.BusinessEntityID
  68.     JOIN AdventureWorks2014.Person.EmailAddress AS T6
  69.         ON T6.BusinessEntityID = T2.BusinessEntityID
  70.  
  71. --5
  72. INSERT INTO Testovi
  73. VALUES('1.1.2015', 'Programiranje 2', 'PR2', 'Strukture', 100, 'a'),
  74.       ('1.2.2016', 'Baze Podataka 1', 'BP1', 'Kardinaliteti', 100, 'b'),
  75.       ('2.3.2017', 'Komunikacijske tehnologije', 'KT', 'Rutiranje', 100, 'c')
  76.  
  77. INSERT INTO RezultatiTestova
  78. VALUES (1, 1, 1, 71, 'Polozio'),
  79.        (1, 2, 1, 80, 'Polozio'),
  80.        (2, 1, 0, 41, 'Nije polozio'),
  81.        (2, 3, 1, 90, 'Polozio'),
  82.        (3, 2, 1, 85, 'Polozio'),
  83.        (1, 3, 0, 25, 'Nije polozio'),
  84.        (2, 2, 0, 30, 'Nije polozio'),
  85.        (3, 1, 1, 67, 'Polozio'),
  86.        (3, 3, 0, 44, 'Nije polozio'),
  87.        (4, 1, 1, 69, 'Polozio')
  88.  
  89. --6
  90. SELECT T1.Ime + ' ' + T1.Prezime AS [Ime i prezime], T1.JMBG, T1.Telefon, T1.Email, T3.Datum, T3.Naziv, T3.Oznaka, T3.Oblast, T3.MaxBrojBodova, T2.Polozio, T2.OsvojeniBodovi, LEFT(CONVERT(nvarchar,((T2.OsvojeniBodovi / T3.MaxBrojBodova) * 100)), 5) + '%' AS [Procentualni rezultat testa]
  91. FROM Kandidati AS T1
  92.     JOIN RezultatiTestova AS T2
  93.         ON T1.KandidatID = T2.KandidatID
  94.     JOIN Testovi AS T3
  95.         ON T2.TestID = T3.TestID
  96. WHERE T3.Oznaka LIKE 'BP1'
  97.  
  98. --7
  99. SELECT *
  100. FROM (
  101. SELECT T1.Naziv, T1.Datum,
  102. ( SELECT COUNT(Polozio)
  103.   FROM RezultatiTestova AS SQT1
  104.   WHERE SQT1.Polozio = 1 AND SQT1.TestID = T1.TestID ) AS Polozili,
  105. ( SELECT COUNT(Polozio)
  106.   FROM RezultatiTestova AS SQT1
  107.   WHERE SQT1.Polozio = 0 AND SQT1.TestID = T1.TestID ) AS Pali
  108. FROM Testovi AS T1
  109. GROUP BY T1.TestID, T1.Naziv, T1.Datum
  110. ) AS RezultatiTestova
  111. WHERE RezultatiTestova.Polozili > 1
  112.  
  113. --8
  114. UPDATE RezultatiTestova
  115. SET OsvojeniBodovi = OsvojeniBodovi + 5
  116. FROM Testovi
  117. WHERE RezultatiTestova.Polozio = 1 AND RezultatiTestova.TestID = Testovi.TestID AND Testovi.Oznaka = 'BP1'
  118.  
  119. --9
  120. DELETE FROM RezultatiTestova
  121. FROM Testovi AS T1
  122.     JOIN RezultatiTestova AS T2
  123.         ON T1.TestID = T2.TestID
  124. WHERE Oznaka LIKE 'KT'
  125.  
  126. DELETE FROM Testovi
  127. WHERE Oznaka LIKE 'KT'
  128.  
  129. --10
  130. ALTER TABLE Kandidati
  131. DROP CONSTRAINT FK_Kandidati_Gradovi
  132.  
  133. ALTER TABLE Kandidati
  134. DROP COLUMN
  135. GradID,
  136. Adresa
  137.  
  138. DROP TABLE Gradovi
  139.  
  140. --GRATIS
  141. USE master
  142. GO
  143. DROP DATABASE IB150085
Add Comment
Please, Sign In to add comment