Stan0033

T-SQL/MSSQL REGULAR EXAM 19/06/22

Jun 19th, 2022 (edited)
632
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.10 KB | None | 0 0
  1. --_________________________________________________________________
  2. --01. DDL
  3. --_________________________________________________________________
  4. CREATE TABLE Owners
  5. (
  6. Id INT PRIMARY KEY IDENTITY,
  7. Name NVARCHAR(50) NOT NULL,
  8. PhoneNumber VARCHAR(15) NOT NULL,
  9. Address VARCHAR(50)  
  10. )
  11. CREATE TABLE AnimalTypes
  12. (
  13.     Id INT PRIMARY KEY IDENTITY,
  14.     AnimalType VARCHAR(30) NOT NULL
  15. )
  16. CREATE TABLE Cages
  17. (
  18.     Id INT PRIMARY KEY IDENTITY,
  19.     AnimalTypeID INT FOREIGN KEY REFERENCES AnimalTypes(Id) NOT NULL,
  20. )
  21. CREATE TABLE Animals
  22. (
  23.     Id INT PRIMARY KEY IDENTITY,
  24.     Name VARCHAR(30) NOT NULL,
  25.     BirthDate DATE NOT NULL,
  26.     OwnerId INT FOREIGN KEY REFERENCES Owners(Id) ,
  27.     AnimalsTypeId INT FOREIGN KEY REFERENCES AnimalTypes(Id) NOT NULL,
  28. )
  29. CREATE TABLE AnimalsCages
  30. (
  31.     CageId INT FOREIGN KEY REFERENCES Cages(Id) NOT NULL UNIQUE,
  32.     AnimalId INT FOREIGN KEY REFERENCES Animals(Id) NOT NULL UNIQUE,
  33.     PRIMARY KEY (CageId,AnimalId)
  34. )
  35. CREATE TABLE VolunteersDepartments
  36. (
  37.     Id INT PRIMARY KEY IDENTITY,
  38.     DepartmentName VARCHAR(30) NOT NULL
  39. )
  40. CREATE TABLE Volunteers
  41. (
  42.     Id INT PRIMARY KEY IDENTITY,
  43.     Name NVARCHAR(50) NOT NULL,
  44.     PhoneNumber VARCHAR(15) NOT NULL,
  45.     Address VARCHAR(50),
  46.     AnimalId INT FOREIGN KEY REFERENCES Animals(Id) ,
  47.     DepartmentId INT FOREIGN KEY REFERENCES VolunteersDepartments(Id) NOT NULL
  48. )
  49. --_________________________________________________________________
  50. --02. Insert
  51. --_________________________________________________________________
  52. INSERT INTO Volunteers (Name, PhoneNumber, Address, AnimalId, DepartmentId)
  53. VALUES
  54.  
  55.   ( 'Anita Kostova','0896365412','Sofia, 5 Rosa str.',15,1),
  56.  ('Dimitur Stoev','0877564223',NULL,42,4),
  57.  ('Kalina Evtimova','0896321112','Silistra, 21 Breza str.',9,7),
  58.  ('Stoyan Tomov','0898564100','Montana, 1 Bor str.',18,8),
  59.  ('Boryana Mileva','0888112233',NULL,31,5)
  60.  
  61.  
  62. INSERT INTO Animals(Name, Birthdate,OwnerId, AnimalTypeId)
  63. VALUES
  64.  
  65. ('Giraffe','2018-09-21',21,1),
  66. ('Harpy Eagle','2015-04-17',15,3),
  67. ('HamadryAS Baboon','2017-11-02',NULL,1),
  68. ('Tuatara','2021-06-30',2,4)
  69. --_________________________________________________________________
  70.  --03. Update
  71. --_________________________________________________________________
  72. UPDATE Animals
  73. SET OwnerId  =   ( SELECT
  74. Id
  75. FROM owners
  76. WHERE Name  =   'Kaloqn Stoqnov'
  77. )
  78. WHERE OwnerId is NULL
  79. --_________________________________________________________________
  80. --04. Delete
  81. --_________________________________________________________________
  82. UPDATE Animals
  83. ALTER TABLE Volunteers
  84. ALTER COLUMN DepartmentId INT
  85. UPDATE Volunteers
  86. SET DepartmentId  =  NULL
  87. WHERE DepartmentId  =  2
  88. DELETE
  89. FROM VolunteersDepartments
  90. WHERE Id  =  2
  91. --_________________________________________________________________
  92. --05. Volunteers
  93. --_________________________________________________________________
  94. SELECT
  95. [Name],
  96. [PhoneNumber],
  97. [Address],
  98. [AnimalId],
  99. [DepartmentId]
  100.  
  101. FROM [Volunteers]
  102.  
  103. ORDER BY [Name], [AnimalId], [DepartmentId]
  104. --_________________________________________________________________
  105. --06. Animals data
  106. --_________________________________________________________________
  107. SELECT
  108. [Name],
  109. [t].[AnimalType],
  110. FORMAT([BirthDate], 'dd.MM.yyyy') AS [BirthDate]
  111.  FROM [Animals] AS [a]
  112. JOIN [AnimalTypes] AS [t]
  113. ON [a].[AnimalTypeId]  =  [t].[Id]
  114. ORDER BY [Name]
  115. ----_________________________________________________________________
  116. --07. Owners AND Their Animals
  117. --_________________________________________________________________
  118. SELECT top (5)
  119. [o].[Name],
  120. count(*) [CountOfAnimals]
  121.  FROM [Animals] AS [a], [Owners] AS [o]
  122.  WHERE [a].[OwnerId] = [o].[Id]
  123.  GROUP BY [o].[Name]
  124.  ORDER BY count(*) DESC;
  125. --_________________________________________________________________
  126. --08.  
  127. --_________________________________________________________________
  128.  
  129. SELECT concat(O.Name,'-',a.Name)  AS [OwnersAnimals], [O].[PhoneNumber], [ac].[CageId]  FROM [Animals] [a], [AnimalTypes] AS [at], [Owners] AS [o], [AnimalsCages] AS [ac]
  130. WHERE [a].[AnimalTypeId] = [at].[Id]
  131. AND [a].[OwnerId] = [O].[Id]
  132. AND [a].[Id] = [ac].[AnimalId]
  133. AND at.AnimalType = 'mammals'
  134. ORDER BY [o].[Name], [a].[Name] DESC
  135. --_________________________________________________________________
  136. --09. Volunteers in Sofia
  137. --_________________________________________________________________
  138. SELECT
  139. [Name],
  140. [PhoneNumber],
  141. REPLACE(REPLACE([Address], 'Sofia', ''), ', ', '') AS [Address]
  142. FROM [Volunteers] AS [v]
  143. JOIN [VolunteersDepartments] AS [d]
  144. ON [v].[DepartmentId]  =  [d].[Id]
  145. WHERE
  146. ([Address] LIKE '%Sofia%') AND
  147. ([d].[DepartmentName]  =  'Education program ASsistant' )  
  148.  
  149. ORDER BY [Name]
  150.  
  151.  --_________________________________________________________________
  152. --10.  
  153. --_________________________________________________________________
  154.  
  155. SELECT [Name], [BirthYear],[AnimalType]
  156.  FROM (
  157. SELECT [Name], FORMAT(BirthDate,'yyyy') AS [BirthYear], [at].[AnimalType],DATEDIFF(YEAR, BirthDate,'2022-01-01') AS [v] FROM [Animals] a,AnimalTypes at  
  158. WHERE [a].[AnimalTypeId] = [at].[Id]
  159. AND [OwnerId] is NULL
  160. AND [at].[AnimalType] NOT IN ('Birds'))
  161. WHERE [a].[v]<5
  162. ORDER BY 1;
  163. --_________________________________________________________________
  164. --11.  
  165. --_________________________________________________________________
  166.  
  167. CREATE FUNCTION [udf_GetVolunteersCountFROMADepartment] (@VolunteersDepartment varchar(30))
  168. RETURNS INT  
  169. AS
  170.  
  171. BEGIN
  172.      DECLARE @result INT
  173.         SET @result  =  (SELECT count(*) FROM [Volunteers]
  174.         WHERE [DepartmentId] IN
  175.         (SELECT [id]
  176.          FROM [VolunteersDepartments]
  177.          WHERE [DepartmentName]  =  @VolunteersDepartment))
  178.      return @result
  179. END
  180. --_________________________________________________________________
  181. --12.  
  182. --_________________________________________________________________
  183. CREATE PROCEDURE [usp_AnimalsWithOwnersOrNot] @AnimalName varchar(30)
  184. AS
  185. BEGIN
  186.     SELECT a.Name, CASE WHEN OwnerId IS NULL THEN 'For adoption'
  187.      ELSE o.Name END AS OwnersName
  188.      FROM [Animals] AS [a] LEFT JOIN [Owners] AS  [o]
  189.      on [a].[OwnerId]  =  [o].[Id]
  190.       WHERE [a].[Name]  =  @AnimalName
  191. END
Add Comment
Please, Sign In to add comment