Advertisement
Guest User

Untitled

a guest
Jul 1st, 2015
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 8.72 KB | None | 0 0
  1. /*Iz baze podataka AdventureWorks2014 prikazati ukupnu
  2. ostvarenu zaradu po zaposleniku na području Evrope u januaru mjesecu 2014. godine.
  3. Lista treba da sadrži ime i prezime zaposlenika (spojeno), datum zaposlenja u formatu dd.mm.yyyy,
  4.  mail adresu, te ukupnu ostvarenu zaradu
  5. zaokruženu na dvije decimale. Podatke sortirati po zaradi opadajućim redoslijedom.*/
  6.  
  7. USE AdventureWorks2014
  8.  
  9. SELECT P.FirstName + ' ' + P.LastName, CONVERT(NVARCHAR,HireDate,104), PE.EmailAddress, ROUND(SUM(SOH.TotalDue),2) AS 'ZARADA'
  10. FROM Person.Person AS P INNER JOIN HumanResources.Employee AS E
  11.     ON P.BusinessEntityID = E.BusinessEntityID INNER JOIN Person.EmailAddress AS PE
  12.     ON P.BusinessEntityID = PE.BusinessEntityID INNER JOIN Sales.SalesPerson AS SP
  13.     ON E.BusinessEntityID = SP.BusinessEntityID INNER JOIN Sales.SalesOrderHeader AS SOH
  14.     ON SP.BusinessEntityID = SOH.SalesPersonID INNER JOIN Sales.SalesTerritory AS ST
  15.     ON SP.TerritoryID = ST.TerritoryID INNER JOIN Sales.SalesOrderDetail AS SOD
  16.     ON SOH.SalesOrderID = SOD.SalesOrderID
  17. WHERE ST.[GROUP] = 'Europe' AND DATEPART(MONTH,SOH.OrderDate) = 1 AND DATEPART(YEAR,SOH.OrderDate) = 2014
  18. GROUP BY P.FirstName, P.LastName, E.HireDate, PE.EmailAddress
  19. ORDER BY ZARADA DESC
  20.  
  21.  
  22. /*Iz baze podataka AdventureWorks2014 prikazati kreditne kartice kojima je plaćeno
  23. više od 20 narudžbi. U listu uključiti ime i prezime vlasnika kartice,
  24. tip kartice, broj kartice, ukupan iznos plaćen karticom.*/
  25.  
  26.  
  27. SELECT P.FirstName, P.LastName,CC.CardType AS 'Tip kartice', CC.CardNumber AS 'Broj Kartice',
  28.         SUM(SOH.TotalDue) AS 'Ukupan Iznos', COUNT(SOH.SalesOrderID) AS 'Broj Narudzbi'
  29. FROM Person.Person AS P INNER JOIN Sales.Customer AS C
  30.         ON P.BusinessEntityID = C.CustomerID INNER JOIN SALES.PersonCreditCard AS PC
  31.         ON P.BusinessEntityID = PC.BusinessEntityID INNER JOIN Sales.CreditCard AS CC
  32.         ON PC.CreditCardID = CC.CreditCardID INNER JOIN SALES.SalesOrderHeader AS SOH
  33.         ON CC.CreditCardID = SOH.CreditCardID
  34. GROUP BY P.FirstName, P.LastName,CC.CardType,CC.CardNumber
  35. HAVING COUNT(SOH.SalesOrderID) >20
  36.  
  37. --1)
  38.  
  39. CREATE DATABASE IB130085_ispit06
  40.  
  41. USE IB130085_ispit06
  42.  
  43. CREATE TABLE Kandidati
  44. (
  45.     Ime NVARCHAR(30) NOT NULL,
  46.     Prezime NVARCHAR(30) NOT NULL,
  47.     JMBG NVARCHAR(13) UNIQUE NONCLUSTERED NOT NULL,
  48.     DatumRodjenja DATE NOT NULL,
  49.     MjestoRodjenja NVARCHAR(30) NULL,
  50.     Telefon NVARCHAR(20) NULL,
  51.     Email NVARCHAR(50) UNIQUE NONCLUSTERED NULL
  52.  
  53. )
  54.  
  55. CREATE TABLE Testovi
  56. (
  57.     Datum DATETIME NOT NULL,
  58.     Naziv NVARCHAR(50) NOT NULL,
  59.     Oznaka NVARCHAR(10) UNIQUE NONCLUSTERED NOT NULL,
  60.     Oblast NVARCHAR(50) NOT NULL,
  61.     MaxBrojBodova INT NOT NULL,
  62.     Opis NVARCHAR(250) NULL
  63.  
  64. )
  65.  
  66. CREATE TABLE RezultatiTesta
  67. (
  68.     Polozio BIT NOT NULL,
  69.     OsvojeniBodovi DECIMAL NOT NULL,
  70.     Napomena NVARCHAR(MAX) NOT NULL
  71. )
  72.  
  73. ALTER TABLE Kandidati
  74. ADD KandidatID INT IDENTITY(1,1) PRIMARY KEY
  75.  
  76. ALTER TABLE Testovi
  77. ADD TestID INT IDENTITY(1,1) PRIMARY KEY
  78.  
  79. ALTER TABLE RezultatiTesta
  80. ADD TestID INT FOREIGN KEY REFERENCES Testovi(TestID) NOT NULL
  81.  
  82.  
  83. ALTER TABLE RezultatiTesta
  84. ADD KandidatID INT FOREIGN KEY REFERENCES Kandidati(KandidatID) NOT NULL
  85.  
  86. ALTER TABLE RezultatiTesta
  87. ADD PRIMARY KEY(KandidatID,TestID)
  88.  
  89.  
  90.  
  91. /*Koristeći AdventureWorks2014 bazu podataka, importovati 10 kupaca u tabelu Kandidati i to sljedeće kolone:
  92. a. FirstName (Person) -> Ime,
  93. b. LastName (Person) -> Prezime,
  94. c. Zadnjih 13 karaktera kolone rowguid iz tabele Customer (Crticu zamijeniti brojem 0) -> JMBG,
  95. d. ModifiedDate (Customer) -> DatumRodjenja,
  96. e. City (Address) -> MjestoRodjenja,
  97. f. PhoneNumber (PersonPhone) -> Telefon,
  98. g. EmailAddress (EmailAddress) -> Email.
  99. Također, u tabelu Testovi unijeti minimalno tri testa sa proizvoljnim podacima.*/
  100.  
  101. INSERT INTO IB130085_ispit06.dbo.Kandidati(Ime,Prezime,JMBG,DatumRodjenja,MjestoRodjenja,Telefon,Email)
  102. SELECT top 10 P.FirstName AS 'Ime', P.LastName AS 'Prezime', RIGHT(REPLACE(C.rowguid,'-','0'),13) AS 'JMBG',
  103.         C.ModifiedDate AS 'DatumRodjenja', PA.City AS 'MjestoRodjenja',PP.PhoneNumber AS 'Telefon',PE.EmailAddress AS 'Email'
  104.        
  105. FROM AdventureWorks2014.Person.Person AS P INNER JOIN AdventureWorks2014.Sales.Customer AS C
  106.         ON P.BusinessEntityID = C.CustomerID INNER JOIN AdventureWorks2014.Person.PersonPhone AS PP
  107.         ON P.BusinessEntityID = PP.BusinessEntityID INNER JOIN AdventureWorks2014.Person.EmailAddress AS PE
  108.         ON P.BusinessEntityID = PE.BusinessEntityID INNER JOIN AdventureWorks2014.Sales.SalesOrderHeader AS SOH
  109.         ON SOH.CustomerID = C.CustomerID INNER JOIN AdventureWorks2014.Person.[Address] AS PA
  110.         ON SOH.ShipToAddressID = PA.AddressID
  111. ORDER BY C.CustomerID DESC
  112.  
  113. INSERT INTO dbo.Testovi VALUES('1-2-2001 14:00','UPR','KJKSZJP','Prog',10,NULL),
  114.                                 ('1-2-2001 15:00','PR1','AJFGHJK','Prog',10,NULL),
  115.                                 ('1-2-2001 16:00','REP','AKDSGJJ','reporting',10,NULL)
  116.                                
  117.  
  118. /*4. Kreirati stored proceduru koja će na osnovu proslijeđenih parametara
  119. služiti za unos podataka u tabelu RezultatiTesta. Proceduru pohraniti pod nazivom
  120. usp_RezultatiTesta_Insert. Obavezno testirati ispravnost kreirane
  121. procedure (unijeti proizvoljno minimalno 10 rezultata za različite testove).*/
  122.  
  123. ALTER PROCEDURE usp_RezultatiTesta_Insert
  124. (
  125.     @Polozio BIT,
  126.     @OsvojeniBodovi DECIMAL,
  127.     @Napomena NVARCHAR(MAX),
  128.     @TestID INT,
  129.     @KandidatID INT
  130.  
  131. )
  132. AS
  133. BEGIN
  134.     INSERT INTO dbo.REzultatiTesta VALUES(@Polozio,@OsvojeniBodovi,@Napomena,@TestID,@KandidatID)
  135.  
  136. END
  137.  
  138.  
  139. SELECT * FROM Testovi
  140. SELECT * FROM Kandidati
  141. SELECT * FROM RezultatiTesta
  142.  
  143.  
  144.  
  145. EXEC usp_RezultatiTesta_Insert @Polozio = 1,@OsvojeniBodovi = 7, @Napomena = 'sedam' , @TestID = 7,
  146.         @KandidatID = 1
  147. EXEC usp_RezultatiTesta_Insert @Polozio = 1,@OsvojeniBodovi = 8, @Napomena = 'osam' , @TestID = 8,
  148.         @KandidatID = 2
  149.  
  150. EXEC usp_RezultatiTesta_Insert @Polozio = 0,@OsvojeniBodovi = 3, @Napomena = 'pet' , @TestID = 9,
  151.         @KandidatID = 3
  152.  
  153. EXEC usp_RezultatiTesta_Insert @Polozio = 0,@OsvojeniBodovi = 3, @Napomena = 'pet' , @TestID = 8,
  154.         @KandidatID = 4
  155.  
  156.  
  157.  
  158. /*Kreirati view (pogled) nad podacima koji će sadržavati sljedeća polja: ime i prezime, jmbg,
  159. telefon i email kandidata, zatim datum, naziv, oznaku, oblast i max. broj bodova na testu,
  160. te polje položio, osvojene bodove i procentualni rezultat testa.
  161.  View pohranite pod nazivom view_Rezultati_Testiranja.*/
  162.  
  163.  
  164.  CREATE VIEW view_Rezultati_Testiranja
  165.  AS
  166.  SELECT K.Ime AS 'Ime', K.Prezime AS 'Prezime', K.JMBG AS 'JMBG',K.Telefon AS 'Telefon', K.Email AS 'Email',
  167.         T.Datum AS 'Datum', T.Naziv AS 'Naziv', T.Oznaka AS 'Oznaka', RT.Polozio AS 'Polozio', RT.OsvojeniBodovi AS 'Bodovi',
  168.         CONVERT(NVARCHAR,ROUND((RT.OsvojeniBodovi/T.MaxBrojBodova)*100,2)) + ' %' AS 'Procenti'
  169. FROM IB130085_ispit06.dbo.Kandidati AS K INNER JOIN RezultatiTesta AS RT
  170.         ON K.KandidatID = RT.KandidatID INNER JOIN Testovi AS T
  171.         ON RT.TestID = T.TestID
  172.  
  173.  
  174. /*6. Kreirati stored proceduru koja će na osnovu proslijeđenih parametara
  175. @OznakaTesta i @Polozio prikazivati rezultate testiranja. Kao izvor podataka koristiti
  176. prethodno kreirani view. Proceduru pohraniti pod nazivom usp_RezultatiTesta_SelectByOznaka.
  177. Obavezno testirati ispravnost kreirane procedure*/
  178.  
  179. CREATE PROCEDURE usp_RezultatiTesta_SelectByOznaka
  180. (
  181.     @OznakaTesta NVARCHAR,
  182.     @Polozio BIT
  183. )
  184. AS
  185. BEGIN
  186.  
  187. SELECT *
  188. FROM [dbo].[view_Rezultati_Testiranja]
  189. WHERE [Oznaka] = @OznakaTesta AND [Polozio] = @Polozio
  190. END
  191.  
  192.  
  193. EXEC usp_RezultatiTesta_SelectByOznaka @OznakaTesta = 'KJKSZJP', @Polozio = 0
  194.  
  195. /*7. Kreirati proceduru koja će služiti za izmjenu rezultata testiranja.
  196.  Proceduru pohraniti pod nazivom usp_RezultatiTesta_Update.
  197. Obavezno testirati ispravnost kreirane procedure.*/
  198.  
  199. CREATE PROCEDURE usp_RezultatiTesta_Update
  200. (
  201.     @TestID INT,
  202.     @Kandidat INT,
  203.     @Polozio BIT,
  204.     @OsvojeniBodovi DECIMAL
  205. )
  206. AS
  207. BEGIN
  208.  
  209. UPDATE RezultatiTesta
  210. SET Polozio = @Polozio,
  211.     OsvojeniBodovi = @OsvojeniBodovi
  212. WHERE TestID = @TestID AND KandidatID = @Kandidat
  213.  
  214. END
  215.  
  216.  
  217. SELECT * FROM RezultatiTesta
  218.  
  219. EXEC usp_RezultatiTesta_Update @TestID = 1, @Kandidat = 3, @Polozio = 1, @OsvojeniBodovi = 60
  220.  
  221. /*Kreirati stored proceduru koja će služiti za brisanje testova zajedno sa
  222. svim rezultatima testiranja. Proceduru pohranite pod nazivom usp_Testovi_Delete.
  223. Obavezno testirati ispravnost kreirane procedure.*/
  224.  
  225. USE IB130085_ispit06
  226.  
  227. ALTER PROCEDURE usp_Testovi_Delete
  228. AS
  229. BEGIN
  230.  
  231. DELETE FROM RezultatiTesta
  232. FROM Testovi AS T
  233.         INNER JOIN RezultatiTesta AS RT
  234.             ON T.TestID = RT.TestID
  235.  
  236. DELETE FROM Testovi
  237.  
  238. END
  239.  
  240. /*Kreirati trigger koji će spriječiti brisanje rezultata testiranja.
  241. Obavezno testirati ispravnost kreiranog triggera.*/
  242.  
  243.  
  244. EXEC usp_Testovi_Delete
  245.  
  246.  
  247. CREATE TRIGGER tr_rezultati_delete
  248. ON RezultatiTesta INSTEAD OF DELETE
  249. AS
  250. BEGIN
  251.     PRINT('Zabranjeno brisanje')
  252. END
  253.  
  254.  
  255.  
  256. /*Uraditi full backup Vaše baze podataka na lokaciju D:\DBMS\Backup.*/
  257.  
  258.  backup DATABASE [IB130085_ispit06] TO disk='D:\'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement