Advertisement
Somo4k

MSSQL Server Exam - 19 June 2022

Jun 19th, 2022
1,429
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 4.33 KB | None | 0 0
  1. CREATE DATABASE Zoo
  2.  
  3. GO
  4.  
  5. USE Zoo
  6.  
  7. --problem01
  8. CREATE TABLE Owners(
  9.     Id INT PRIMARY KEY IDENTITY,
  10.     [Name] VARCHAR(50) NOT NULL,
  11.     PhoneNumber VARCHAR(15) NOT NULL,
  12.     [Address] VARCHAR(50)
  13. )
  14.  
  15. CREATE TABLE AnimalTypes(
  16.     Id INT PRIMARY KEY IDENTITY,
  17.     AnimalType VARCHAR(30) NOT NULL
  18. )
  19.  
  20. CREATE TABLE Cages(
  21.     Id INT PRIMARY KEY IDENTITY,
  22.     AnimalTypeId INT FOREIGN KEY REFERENCES AnimalTypes(Id) NOT NULL
  23. )
  24.  
  25. CREATE TABLE Animals(
  26.     Id INT PRIMARY KEY IDENTITY,
  27.     [Name] VARCHAR(30) NOT NULL,
  28.     BirthDate DATE NOT NULL,
  29.     OwnerId INT FOREIGN KEY REFERENCES Owners(Id),
  30.     AnimalTypeId INT FOREIGN KEY REFERENCES AnimalTypes(Id) NOT NULL
  31. )
  32.  
  33. CREATE TABLE AnimalsCages(
  34.     CageId INT FOREIGN KEY REFERENCES Cages(Id) NOT NULL,
  35.     AnimalId INT FOREIGN KEY REFERENCES Animals(Id) NOT NULL,
  36.     PRIMARY KEY (CageId, AnimalId)
  37. )
  38.  
  39. CREATE TABLE VolunteersDepartments(
  40.     Id INT PRIMARY KEY IDENTITY,
  41.     DepartmentName VARCHAR(30) NOT NULL,
  42. )
  43.  
  44. CREATE TABLE Volunteers(
  45.     Id INT PRIMARY KEY IDENTITY,
  46.     [Name] VARCHAR(50) NOT NULL,
  47.     PhoneNumber VARCHAR(15) NOT NULL,
  48.     [Address] VARCHAR(50),
  49.     AnimalId INT FOREIGN KEY REFERENCES Animals(Id),
  50.     DepartmentId INT FOREIGN KEY REFERENCES VolunteersDepartments(Id) NOT NULL
  51. )
  52.  
  53. --Problem02
  54. INSERT INTO Volunteers([Name], PhoneNumber, [Address], AnimalId, DepartmentId)
  55.     VALUES
  56.      ('Anita Kostova''0896365412',   'Sofia, 5 Rosa str.',   15, 1),
  57.      ('Dimitur Stoev',  '0877564223',    NULL42, 4),
  58.      ('Kalina Evtimova','0896321112',   'Silistra, 21 Breza str.'97),
  59.      ('Stoyan Tomov',   '0898564100',   'Montana, 1 Bor str.'18, 8),
  60.      ('Boryana Mileva', '0888112233',    NULL31, 5)
  61.  
  62. INSERT INTO Animals([Name], BirthDate, OwnerId, AnimalTypeId)
  63.     VALUES
  64.     ('Giraffe', '2018-09-21', 21,   1),
  65.     ('Harpy Eagle', '2015-04-17', 15, 3),
  66.     ('Hamadryas Baboon', '2017-11-02', NULL, 1),
  67.     ('Tuatara', '2021-06-30', 2,   4)
  68.  
  69. --Problem03
  70. UPDATE Animals
  71. SET OwnerId = 4
  72. WHERE OwnerId IS NULL
  73.  
  74. --Problem04
  75. DELETE FROM Volunteers
  76.       WHERE DepartmentId = 2
  77.  
  78.  
  79. DELETE FROM VolunteersDepartments
  80.       WHERE Id = 2
  81.  
  82. --Problem05
  83. SELECT [Name]
  84.        PhoneNumber,
  85.        [Address],
  86.        AnimalId,
  87.        DepartmentId
  88.   FROM Volunteers
  89. ORDER BY [Name], AnimalId, DepartmentId
  90.  
  91. --Problem06
  92. SELECT a.[Name],
  93.        at.AnimalType,
  94.        FORMAT(a.BirthDate,'dd.MM.yyyy') AS [BirthDate]
  95.   FROM Animals AS a
  96.  JOIN AnimalTypes AS at ON a.AnimalTypeId = at.Id
  97.  ORDER BY a.[Name]
  98.  
  99. --Problem07
  100. SELECT TOP(5)
  101.         o.[Name] AS [Owner],
  102.        COUNT(*) AS CountOfAnimals
  103.     FROM Animals AS a
  104. JOIN Owners AS o ON a.OwnerId = o.Id
  105. GROUP BY o.[Name]
  106. ORDER BY CountOfAnimals DESC
  107.  
  108. --Probem08
  109.    SELECT CONCAT_WS('-',o.[Name], a.[Name]) AS [OwnersAnimals],
  110.           PhoneNumber,
  111.           CageId
  112.      FROM OWNERS AS o
  113.      JOIN Animals AS a ON a.OwnerId = o.Id
  114.      JOIN AnimalsCages AS ac ON a.Id = ac.AnimalId
  115.      JOIN AnimalTypes AS at ON a.AnimalTypeId = at.Id
  116.      WHERE at.AnimalType = 'Mammals'
  117.  ORDER BY o.[Name], a.[Name] DESC
  118.  
  119.  
  120.  --Probem09
  121.  SELECT  v.[Name],
  122.          v.[PhoneNumber],
  123.          SUBSTRING(v.[Address], CHARINDEX(',', v.[Address]) + 2,LEN(v.[Address])) AS [Address]
  124.      FROM Volunteers AS v
  125. LEFT JOIN VolunteersDepartments AS vd ON vd.Id = v.DepartmentId
  126.     WHERE v.DepartmentId = 2 AND v.[Address] LIKE '%Sofia%'
  127.  ORDER BY v.[Name]
  128.  
  129.  --Probem10
  130.  SELECT a.[Name],
  131.         DATEPART(YEAR, a.BirthDate) AS BirthYear,
  132.         [at].AnimalType
  133.     FROM Animals AS a
  134. Join AnimalTypes AS [at] ON a.AnimalTypeId = [at].Id   
  135.  WHERE OwnerId IS NULL AND DATEPART(YEAR, a.BirthDate) > 2017 AND [at].AnimalType <> 'Birds'
  136.  ORDER BY a.[Name]
  137.  
  138.  GO
  139.  --Problem11
  140. CREATE FUNCTION udf_GetVolunteersCountFromADepartment (@VolunteersDepartment VARCHAR(30))
  141. RETURNS INT
  142. AS
  143. BEGIN
  144.         DECLARE @Count INT = (SELECT COUNT(v.[Name])
  145.                              FROM Volunteers AS v
  146.                              JOIN VolunteersDepartments AS vd ON v.DepartmentId = vd.Id
  147.                              WHERE vd.DepartmentName = @VolunteersDepartment
  148.                              )
  149.         RETURN @Count
  150. END
  151.  
  152. GO
  153.  
  154. GO
  155.  
  156. --Problem12
  157.  
  158. GO
  159.  
  160. CREATE PROCEDURE usp_AnimalsWithOwnersOrNot @AnimalName VARCHAR(30)
  161. AS
  162. BEGIN
  163.         SELECT a.[Name],
  164.                    CASE
  165.                       WHEN a.OwnerId IS NULL THEN 'For adoption'
  166.                       ELSE o.[Name]
  167.                    END AS [OwnersName]
  168.          FROM Animals AS a
  169.     LEFT JOIN Owners AS o ON a.OwnerId = o.Id
  170.         WHERE a.[Name] = @AnimalName
  171. END
  172.  
  173. GO
  174.  
  175. --END
  176.  
  177.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement