Advertisement
Stan0033

SOFTUNI T-SQL EXAM 19 June 2022

Aug 9th, 2022
1,272
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 6.01 KB | None | 0 0
  1. CREATE DATABASE Zoo
  2.  
  3. USE Zoo
  4.  
  5. CREATE TABLE Owners(
  6.                     Id INT PRIMARY KEY IDENTITY,
  7.                     [Name] VARCHAR(50) NOT NULL,
  8.                     PhoneNumber VARCHAR(15) NOT NULL,
  9.                     [Address] VARCHAR(50)
  10.                     )
  11.  
  12. CREATE TABLE AnimalTypes(
  13.                         Id INT PRIMARY KEY IDENTITY,
  14.                         AnimalType VARCHAR(30) NOT NULL
  15.                         )
  16.  
  17. CREATE TABLE Cages(
  18.                     Id INT PRIMARY KEY IDENTITY,
  19.                     AnimalTypeId INT FOREIGN KEY REFERENCES AnimalTypes(Id) NOT NULL
  20.                     )
  21.  
  22. CREATE TABLE Animals (
  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.                     AnimalTypeId INT FOREIGN KEY REFERENCES AnimalTypes(Id) NOT NULL
  28.                     )
  29.  
  30. CREATE TABLE AnimalsCages (
  31.                             CageId INT FOREIGN KEY REFERENCES Cages(Id) UNIQUE NOT NULL,
  32.                             AnimalId INT FOREIGN KEY REFERENCES Animals(Id) UNIQUE NOT NULL,
  33.                             PRIMARY KEY(CageId, AnimalId)
  34.                           )
  35.  
  36. CREATE TABLE VolunteersDepartments(
  37.                                     Id INT PRIMARY KEY IDENTITY,
  38.                                     DepartmentName VARCHAR(30) NOT NULL
  39.                                     )
  40.  
  41. CREATE TABLE Volunteers(
  42.                         Id INT PRIMARY KEY IDENTITY,
  43.                         [Name] VARCHAR(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. INSERT INTO Volunteers([Name],PhoneNumber,[Address],AnimalId,DepartmentId)
  51. VALUES
  52. ('Anita Kostova',   '0896365412',   'Sofia, 5 Rosa str.',   15, 1),
  53. ('Dimitur Stoev',   '0877564223',   null,   42, 4),
  54. ('Kalina Evtimova', '0896321112',   'Silistra, 21 Breza str.',  9,  7),
  55. ('Stoyan Tomov',    '0898564100',   'Montana, 1 Bor str.',  18, 8),
  56. ('Boryana Mileva',  '0888112233',   null,   31, 5)
  57.  
  58.  
  59. INSERT INTO Animals ([Name],BirthDate,OwnerId,AnimalTypeId)
  60. VALUES
  61. ('Giraffe', '2018-09-21',   21, 1),
  62. ('Harpy Eagle', '2015-04-17',   15, 3),
  63. ('Hamadryas Baboon',    '2017-11-02',   null,   1),
  64. ('Tuatara', '2021-06-30',   2,  4)
  65.  
  66.  
  67. --3.    Update
  68.  
  69. UPDATE Animals
  70. SET OwnerId = ( SELECT Id
  71.                 FROM Owners
  72.                 WHERE [Name] = 'Kaloqn Stoqnov')
  73. WHERE OwnerId IS NULL
  74.  
  75. --4.    Delete
  76.  
  77.  
  78. DELETE FROM Volunteers
  79. WHERE DepartmentId = (
  80.                         SELECT Id
  81.                         FROM VolunteersDepartments
  82.                         WHERE DepartmentName = 'Education program assistant')
  83.  
  84.  
  85. DELETE FROM VolunteersDepartments
  86. WHERE DepartmentName = 'Education program assistant'
  87.  
  88.  
  89. --5.    Volunteers
  90.  
  91. SELECT [Name], PhoneNumber, [Address], AnimalId, DepartmentId
  92. FROM Volunteers
  93. ORDER BY [Name], AnimalId, DepartmentId
  94.  
  95. --6.    Animals data
  96.  
  97. SELECT [Name],
  98.         (SELECT AnimalType
  99.         FROM AnimalTypes
  100.         WHERE Id =AnimalTypeId) AS AnimalType,
  101.        FORMAT(BirthDate, 'dd.MM.yyyy') AS BirthDate
  102. FROM Animals
  103. ORDER BY [Name]
  104.  
  105.  
  106. --7.    Owners and Their Animals
  107.  
  108.   SELECT TOP(5)[Name] AS [Owner],
  109.               (SELECT COUNT(Id)
  110.                FROM Animals
  111.                WHERE OwnerId = o.Id
  112.                GROUP BY OwnerId) AS CountOfAnimals
  113.     FROM Owners AS o
  114. ORDER BY CountOfAnimals DESC, [Owner]
  115.  
  116.  
  117. --8.    Owners, Animals and Cages
  118.  
  119. SELECT CONCAT(o.[Name],'-',a.[Name]) AS OwnersAnimals,
  120.        o.PhoneNumber,
  121.        ac.CageId
  122. FROM Owners AS o
  123. JOIN Animals AS a ON o.Id = a.OwnerId
  124. JOIN AnimalTypes AS aty ON a.AnimalTypeId = aty.Id
  125. JOIN AnimalsCages AS ac ON a.ID = ac. AnimalId
  126. WHERE aty.AnimalType = 'mammals'
  127. ORDER BY o.[Name], a.[Name] DESC
  128.  
  129.  
  130. --9.    Volunteers in Sofia
  131.   SELECT v.[Name], v.PhoneNumber,
  132.          SUBSTRING(
  133.                    [Address],
  134.                    CHARINDEX(',',[Address])+2,
  135.                    LEN([Address]) - CHARINDEX(',',[Address])) AS Address
  136.     FROM Volunteers AS v
  137.     JOIN VolunteersDepartments AS vd ON v.DepartmentId = vd.Id
  138.    WHERE vd.DepartmentName = 'Education program assistant' AND v.[Address] LIKE '%Sofia%'
  139. ORDER BY v.[Name]
  140.  
  141.  
  142. --10.   Animals for Adoption
  143.  
  144.   SELECT a.[Name],
  145.          DATEPART(year, a.BirthDate) AS BirthYear,
  146.          aty.AnimalType
  147.     FROM Animals AS a
  148.     JOIN AnimalTypes AS aty ON a.AnimalTypeId = aty.Id
  149.    WHERE aty.AnimalType != 'Birds' AND a.OwnerId IS NULL AND DATEDIFF(year,a.BirthDate,'2022-01-01') < 5
  150. ORDER BY a.[Name]
  151.  
  152.  
  153. --11.   All Volunteers in a Department
  154. GO
  155. CREATE OR ALTER FUNCTION udf_GetVolunteersCountFromADepartment (@VolunteersDepartment VARCHAR(50))
  156. RETURNS INT
  157. BEGIN
  158.  
  159. RETURN (
  160.           SELECT COUNT(Id)
  161.             FROM Volunteers
  162.            WHERE DepartmentId = (
  163.                                 SELECT Id
  164.                                 FROM VolunteersDepartments
  165.                                 WHERE DepartmentName = @VolunteersDepartment)
  166.         GROUP BY DepartmentId
  167.         )
  168. END
  169. GO
  170.  
  171. SELECT dbo.udf_GetVolunteersCountFromADepartment ('Education program assistant')
  172. SELECT dbo.udf_GetVolunteersCountFromADepartment ('Guest engagement')
  173. SELECT dbo.udf_GetVolunteersCountFromADepartment ('Zoo events')
  174.  
  175.  
  176. --12.   Animals with Owner or Not
  177.  
  178. GO
  179. CREATE OR ALTER PROC usp_AnimalsWithOwnersOrNot @AnimalName VARCHAR(30)
  180. AS
  181. BEGIN
  182. SELECT a.[Name],
  183.        CASE
  184.           WHEN a.OwnerId IS NULL THEN 'For adoption'
  185.           ELSE o.[Name]
  186.        END AS OwnersName
  187. FROM Animals AS a
  188. LEFT JOIN Owners AS o ON a.OwnerId = o.Id
  189. WHERE a.[Name] = @AnimalName
  190. END
  191. GO
  192.  
  193. EXEC usp_AnimalsWithOwnersOrNot 'Pumpkinseed Sunfish'
  194. EXEC usp_AnimalsWithOwnersOrNot 'Hippo'
  195. EXEC usp_AnimalsWithOwnersOrNot 'Brown bear'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement