Advertisement
Guest User

Untitled

a guest
Oct 20th, 2019
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.63 KB | None | 0 0
  1. --1
  2. CREATE TABLE [Users] (
  3. [Id] INT PRIMARY KEY IDENTITY(1,1) NOT NULL ,
  4. [Username] VARCHAR(30) UNIQUE NOT NULL,
  5. [Password] VARCHAR(50) NOT NULL,
  6. [Name] VARCHAR(50) ,
  7. [Birthdate] DATE ,
  8. [Age] INT CHECK ([Age] > 14 AND [Age] < 110),
  9. [Email] VARCHAR(50) NOT NULL
  10. )
  11.  
  12.  
  13. CREATE TABLE [Departments] (
  14. [Id] INT PRIMARY KEY IDENTITY(1,1) NOT NULL,
  15. [Name] VARCHAR(50) NOT NULL
  16. )
  17.  
  18. CREATE TABLE [Employees] (
  19. [Id] INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
  20. [FirstName] VARCHAR(25),
  21. [LastName] VARCHAR(25),
  22. [Birthdate] DATE ,
  23. [Age] INT CHECK ([Age] > 18 AND [Age] < 110),
  24. [DepartmentId] INT FOREIGN KEY REFERENCES Departments([Id])
  25. )
  26.  
  27.  
  28. CREATE TABLE [Categories] (
  29. [Id] INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
  30. [Name] VARCHAR(50) NOT NULL,
  31. [DepartmentId] INT FOREIGN KEY REFERENCES Departments([Id])
  32. )
  33.  
  34.  
  35. CREATE TABLE [Status] (
  36. [Id] INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
  37. [Label] VARCHAR(30) NOT NULL
  38. )
  39.  
  40. CREATE TABLE [Reports] (
  41. [Id] INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
  42. [CategoryId] INT FOREIGN KEY REFERENCES Categories([Id]) NOT NULL,
  43. [StatusId] INT FOREIGN KEY REFERENCES [Status]([Id]) NOT NULL,
  44. [OpenDate] DATE NOT NULL ,
  45. [CloseDate] DATE ,
  46. [Description] VARCHAR(200) NOT NULL,
  47. [UserId] INT FOREIGN KEY REFERENCES Users([Id]) NOT NULL ,
  48. [EmployeeId] INT FOREIGN KEY REFERENCES Employees([Id])
  49. )
  50.  
  51. --2
  52. INSERT INTO Employees ([FirstName] , [LastName], [Birthdate] , [DepartmentId])
  53. VALUES
  54. ('Marlo' , 'O''Malley' , '1958-9-21' , 1),
  55. ('Niki', 'Stanaghan' , '1969-11-26' , 4),
  56. ('Ayrton', 'Senna' , '1960-03-21' , 9),
  57. ('Ronnie' , 'Peterson' , '1944-02-14' , 9),
  58. ('Giovanna', 'Amati', '1959-07-20' , 5)
  59.  
  60.  
  61. INSERT INTO Reports ([CategoryId], [StatusId], [OpenDate], [CloseDate] , [Description], [UserId] , [EmployeeId])
  62. VALUES
  63. (1, 1, '2017-04-13' , NULL , 'Stuck Road on Str.133', 6, 2),
  64. (6 , 3 , '2015-09-05' , '2015-12-06', 'Charity trail running', 3 , 5),
  65. (14, 2 , '2015-09-07' , NULL, 'Falling bricks on Str.58' , 5, 2),
  66. (4, 3 , '2017-07-03' , '2017-07-06' , 'Cut off streetlight on Str.11', 1,1)
  67.  
  68.  
  69. --3
  70. UPDATE Reports
  71. SET [CloseDate] = [OpenDate]
  72. WHERE [CloseDate] IS NULL
  73.  
  74.  
  75. --4
  76. DELETE FROM Reports
  77. WHERE [StatusId] IN(SELECT [Id] FROM [Status] WHERE [Id] = 4)
  78. DELETE FROM [Status]
  79. WHERE [Id] = 4
  80.  
  81. --5
  82. SELECT r.[Description] , FORMAT(r.[OpenDate], 'dd-MM-yyyy') AS [OpenDate]
  83. FROM [Reports] AS r
  84. WHERE r.[EmployeeId] IS NULL
  85. ORDER BY r.[OpenDate] , r.[Description]
  86.  
  87. --6
  88. SELECT r.[Description] , c.[Name] AS [CategoryName]
  89. FROM [Reports] AS r
  90. JOIN [Categories] AS c ON c.Id = r.CategoryId
  91. ORDER BY r.[Description] , c.[Name]
  92.  
  93. --7
  94. SELECT TOP(5) c.[Name] AS [CategoryName] , COUNT(r.Id) AS [ReportsNumber]
  95. FROM Categories AS c
  96. JOIN [Reports] AS r ON r.CategoryId = c.[Id]
  97. GROUP BY c.[Name]
  98. ORDER BY [ReportsNumber] DESC , [CategoryName]
  99.  
  100.  
  101. --8
  102. SELECT u.Username , c.[Name] AS [CategoryName]
  103. FROM Users AS u
  104. LEFT JOIN Reports AS r ON r.UserId = u.Id
  105. LEFT JOIN Categories AS c ON c.Id = r.CategoryId
  106. WHERE (MONTH(u.Birthdate) = MONTH(r.OpenDate) AND DAY(u.Birthdate) = DAY(r.OpenDate))
  107. ORDER BY u.Username , [CategoryName]
  108.  
  109. --9
  110. SELECT CONCAT(e.FirstName , ' ', e.LastName) AS [FullName] , COUNT(DISTINCT r.UserId) AS [UsersCount]
  111. FROM Employees AS e
  112. LEFT JOIN [Reports] AS r ON r.EmployeeId = e.Id
  113. GROUP BY e.FirstName , e.LastName
  114. ORDER BY [UsersCount] DESC , [FullName]
  115.  
  116.  
  117. -- 11
  118.  
  119. CREATE FUNCTION udf_HoursToComplete(@StartDate DATETIME, @EndDate DATETIME)
  120. RETURNS INT
  121. AS
  122. BEGIN
  123. IF (@StartDate IS NULL)
  124. BEGIN
  125. RETURN 0
  126. END
  127.  
  128. IF (@EndDate IS NULL)
  129. BEGIN
  130. RETURN 0
  131. END
  132.  
  133. RETURN DATEDIFF(hour , @StartDate, @EndDate)
  134. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement