Advertisement
JanuszKowalski123

oze4

Apr 15th, 2024 (edited)
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.87 KB | None | 0 0
  1. -- Tworzenie tabeli urządzeń OZE
  2.  
  3. CREATE TABLE Renewable_Energy_Devices (
  4. device_id NVARCHAR(26) PRIMARY KEY,
  5. device_status INT CHECK (device_status >= 0 AND device_status <= 6)
  6. );
  7.  
  8. -- Wstawianie danych do tabeli urządzeń OZE
  9. INSERT INTO Renewable_Energy_Devices (device_id, device_status)
  10. VALUES
  11. ('12345678901234567890123456', 0),
  12. ('22345678901234567890123456', 1),
  13. ('32345678901234567890123456', 2),
  14. ('42345678901234567890123456', 3),
  15. ('52345678901234567890123456', 4),
  16. ('62345678901234567890123456', 0),
  17. ('72345678901234567890123456', 1),
  18. ('82345678901234567890123456', 2),
  19. ('92345678901234567890123456', 3),
  20. ('10234567890123456789012345', 4),
  21. ('11234567890123456789012345', 0),
  22. ('12234567890123456789013456', 1),
  23. ('13234567890123456789012456', 2),
  24. ('14234567890123456789012345', 3),
  25. ('15234567890123456789012345', 4),
  26. ('16234567890123456789012345', 0),
  27. ('17234567890123456789012356', 1),
  28. ('18234567890123456789012345', 2),
  29. ('19234567890123456789012345', 3),
  30. ('20234567890123456789012345', 4),
  31. ('21234567890123456789012345', 0),
  32. ('22234567890123456789012345', 1),
  33. ('23234567890123456789012345', 2),
  34. ('24234567890123456789012345', 3),
  35. ('25234567890123456789012345', 4),
  36. ('26234567890123456789012345', 0),
  37. ('27234567890123456789012345', 1),
  38. ('28234567890123456789012345', 2),
  39. ('29234567890123456789012345', 3),
  40. ('30234567890123456789012345', 4),
  41. ('31234567890123456789012345', 0),
  42. ('32234567890123456789012345', 1),
  43. ('33234567890123456789012345', 2),
  44. ('34234567890123456789012345', 3),
  45. ('35234567890123456789012345', 4),
  46. ('36234567890123456789012345', 0),
  47. ('37234567890123456789012345', 1),
  48. ('38234567890123456789012345', 2),
  49. ('39234567890123456789012345', 3),
  50. ('40234567890123456789012345', 4),
  51. ('41234567890123456789012345', 0),
  52. ('42234567890123456789012345', 1),
  53. ('43234567890123456789012345', 2),
  54. ('44234567890123456789012345', 3),
  55. ('45234567890123456789012345', 4);
  56.  
  57. --('12345678901234567890123456', 0),
  58. --('22345678901234567890123456', 1),
  59. --('32345678901234567890123456', 2),
  60. --('42345678901234567890123456', 3),
  61. --('52345678901234567890123456', 4);
  62.  
  63.  
  64. -- Tworzenie tabeli zgłoszeń awarii
  65.  
  66. CREATE TABLE Device_Failures (
  67. failure_id INT PRIMARY KEY IDENTITY,
  68. device_id NVARCHAR(26),
  69. shift_number INT,
  70. failure_start DATETIME,
  71. failure_end DATETIME,
  72. FOREIGN KEY (device_id) REFERENCES Renewable_Energy_Devices(device_id)
  73. );
  74.  
  75. -- Wstawianie danych do tabeli zgłoszeń awarii
  76.  
  77. DECLARE @i INT = 1
  78. WHILE @i <= 500
  79. BEGIN
  80. INSERT INTO Device_Failures (device_id, shift_number, failure_start, failure_end)
  81. VALUES (CONCAT(@i, '2345678901234567890123456'), 1, DATEADD(DAY, -@i, GETDATE()), DATEADD(DAY, -@i+1, GETDATE()));
  82. SET @i = @i + 1
  83. END
  84.  
  85. -- Tworzenie tabeli klientów
  86.  
  87. CREATE TABLE Customers (
  88. customer_id INT PRIMARY KEY,
  89. name VARCHAR(255),
  90. email VARCHAR(255),
  91. phone VARCHAR(20),
  92. address VARCHAR(255)
  93. );
  94.  
  95. -- Wstawianie danych do tabeli klientów
  96. INSERT INTO Customers (customer_id, name, email, phone, address)
  97. VALUES
  98. (1, 'John Doe', '[email protected]', '123456789', '123 Main St'),
  99. (2, 'Jane Smith', '[email protected]', '987654321', '456 Elm St'),
  100. (3, 'Michael Johnson', '[email protected]', '555123456', '789 Oak St'),
  101. (4, 'Emily Brown', '[email protected]', '444987654', '321 Pine St'),
  102. (5, 'William Wilson', '[email protected]', '789456123', '654 Birch St'),
  103. (6, 'Olivia Taylor', '[email protected]', '987123456', '987 Maple St'),
  104. (7, 'James Martinez', '[email protected]', '321654987', '159 Cedar St'),
  105. (8, 'Emma Anderson', '[email protected]', '666333999', '753 Walnut St'),
  106. (9, 'Noah Thomas', '[email protected]', '222333444', '852 Spruce St'),
  107. (10, 'Ava Hernandez', '[email protected]', '111222333', '369 Cherry St'),
  108. (11, 'Sophia Lopez', '[email protected]', '777888999', '741 Elm St'),
  109. (12, 'Matthew Gonzalez', '[email protected]', '222111333', '258 Oak St'),
  110. (13, 'Isabella Perez', '[email protected]', '666777888', '951 Pine St'),
  111. (14, 'Jacob Robinson', '[email protected]', '999888777', '753 Maple St'),
  112. (15, 'Ethan Lee', '[email protected]', '111222333', '852 Cedar St'),
  113. (16, 'Oliver Walker', '[email protected]', '444555666', '963 Walnut St'),
  114. (17, 'Daniel Hall', '[email protected]', '888777666', '357 Birch St'),
  115. (18, 'Liam Young', '[email protected]', '999888777', '159 Spruce St'),
  116. (19, 'Charlotte Hernandez', '[email protected]', '333222111', '456 Cherry St'),
  117. (20, 'Amelia Moore', '[email protected]', '222333444', '789 Elm St'),
  118. (21, 'Benjamin Nelson', '[email protected]', '444555666', '357 Pine St'),
  119. (22, 'Lucas Hill', '[email protected]', '111222333', '852 Maple St'),
  120. (23, 'Mia King', '[email protected]', '555666777', '963 Cedar St'),
  121. (24, 'Harper Baker', '[email protected]', '777888999', '357 Walnut St'),
  122. (25, 'Evelyn Adams', '[email protected]', '999888777', '456 Birch St');
  123.  
  124. INSERT INTO Customers (customer_id, name, email, phone, address)
  125. VALUES (26, 'John Doe', '[email protected]', '123456789', '556 Main St'),
  126. (27, 'Jane Smith', '[email protected]', '987654321', '431 Elm St');
  127.  
  128.  
  129.  
  130.  
  131. -- Tworzenie tabeli firm serwisowych
  132.  
  133. CREATE TABLE Servicing_Companies (
  134. company_id INT PRIMARY KEY,
  135. name VARCHAR(255),
  136. working_hours VARCHAR(255) -- Można to dostosować w zależności od potrzeb
  137. );
  138.  
  139. -- Wstawianie danych do tabeli firm serwisowych
  140.  
  141. INSERT INTO Servicing_Companies (company_id, name, working_hours)
  142. VALUES (1, 'Company Y', '6:00-14:00, 14:00-22:00, 22:00-6:00');
  143.  
  144.  
  145.  
  146.  
  147. -- Tworzenie tabeli zmian serwisowych
  148.  
  149. CREATE TABLE Servicing_Shifts (
  150. shift_number INT PRIMARY KEY IDENTITY,
  151. shift_date DATE,
  152. shift_type INT CHECK (shift_type >= 1 AND shift_type <= 3),
  153. start_time TIME,
  154. end_time TIME
  155. );
  156.  
  157. -- Wstawianie danych do tabeli zmian serwisowych (poniedziałek - sobota)
  158. INSERT INTO Servicing_Shifts (shift_date, shift_type, start_time, end_time) VALUES
  159. ('2024-04-01', 1, '06:00:00', '14:00:00'),
  160. ('2024-04-01', 2, '14:00:00', '22:00:00'),
  161. ('2024-04-01', 3, '22:00:00', '06:00:00'),
  162. ('2024-04-02', 1, '06:00:00', '14:00:00'),
  163. ('2024-04-02', 2, '14:00:00', '22:00:00'),
  164. ('2024-04-02', 3, '22:00:00', '06:00:00'),
  165. ('2024-04-03', 1, '06:00:00', '14:00:00'),
  166. ('2024-04-03', 2, '14:00:00', '22:00:00'),
  167. ('2024-04-03', 3, '22:00:00', '06:00:00'),
  168. ('2024-04-04', 1, '06:00:00', '14:00:00'),
  169. ('2024-04-04', 2, '14:00:00', '22:00:00'),
  170. ('2024-04-04', 3, '22:00:00', '06:00:00'),
  171. ('2024-04-05', 1, '06:00:00', '14:00:00'),
  172. ('2024-04-05', 2, '14:00:00', '22:00:00'),
  173. ('2024-04-05', 3, '22:00:00', '06:00:00'),
  174. ('2024-04-06', 1, '06:00:00', '14:00:00'),
  175. ('2024-04-06', 2, '14:00:00', '22:00:00'),
  176. ('2024-04-06', 3, '22:00:00', '06:00:00');
  177.  
  178.  
  179.  
  180. -- Tworzenie tabeli napraw
  181.  
  182. CREATE TABLE Repairs (
  183. repair_id INT PRIMARY KEY IDENTITY,
  184. device_id NVARCHAR(26),
  185. repair_start DATETIME,
  186. repair_end DATETIME,
  187. repair_description NVARCHAR(255),
  188. FOREIGN KEY (device_id) REFERENCES Renewable_Energy_Devices(device_id)
  189. );
  190.  
  191. -- Wstawianie danych do tabeli napraw
  192.  
  193. DECLARE @i INT = 1
  194. WHILE @i <= 500
  195. BEGIN
  196. INSERT INTO Repairs (device_id, repair_start, repair_end, repair_description)
  197. VALUES (CONCAT(@i, '2345678901234567890123456'), DATEADD(DAY, -@i, GETDATE()), DATEADD(DAY, -@i+1, GETDATE()), 'Naprawa urządzenia');
  198. SET @i = @i + 1
  199. END
  200.  
  201.  
  202.  
  203.  
  204. --RAPORTY ####################################################3
  205.  
  206. --Na jakiej zmianie dane urządzenie OZE uległo awarii:
  207.  
  208. SELECT df.device_id, df.shift_number
  209. FROM Device_Failures df
  210. ORDER BY df.failure_start;
  211.  
  212.  
  213. --Na jakiej zmianie urządzenie OZE zostało naprawione:
  214.  
  215. SELECT r.device_id, df.shift_number
  216. FROM Repairs r
  217. JOIN Device_Failures df ON r.device_id = df.device_id
  218. WHERE r.repair_start BETWEEN df.failure_start AND df.failure_end
  219. ORDER BY r.repair_start;
  220.  
  221.  
  222. --Jaki był czas przestoju danego urządzenia OZE w ciągu zadanego okresu czasu:
  223.  
  224. SELECT df.device_id, SUM(DATEDIFF(HOUR, df.failure_start, df.failure_end)) AS downtime_hours
  225. FROM Device_Failures df
  226. GROUP BY df.device_id;
  227.  
  228.  
  229. --Jaki był czas przestoju danego urządzenia OZE w ciągu zadanego okresu czasu nie wliczając w to czasu kiedy firma serwisująca nie pracowała (weekendy):
  230.  
  231. SELECT df.device_id, SUM(DATEDIFF(HOUR, df.failure_start, df.failure_end)) AS downtime_hours
  232. FROM Device_Failures df
  233. JOIN Servicing_Shifts ss ON df.shift_number = ss.shift_number
  234. WHERE DATENAME(WEEKDAY, df.failure_start) NOT IN ('Saturday', 'Sunday')
  235. GROUP BY df.device_id;
  236.  
  237.  
  238. --Jaki był sumaryczny czas przestoju wszystkich urządzeń OZE w ciągu zadanego okresu czasu nie wliczając w to czasu kiedy firma serwisująca nie pracowała (weekendy):
  239.  
  240. SELECT SUM(downtime_hours) AS total_downtime_hours
  241. FROM (
  242. SELECT df.device_id, SUM(DATEDIFF(HOUR, df.failure_start, df.failure_end)) AS downtime_hours
  243. FROM Device_Failures df
  244. JOIN Servicing_Shifts ss ON df.shift_number = ss.shift_number
  245. WHERE DATENAME(WEEKDAY, df.failure_start) NOT IN ('Saturday', 'Sunday')
  246. GROUP BY df.device_id
  247. ) AS downtime_per_device;
  248.  
  249.  
  250.  
  251. --Jaki jest procentowy udział urządzeń OZE w poszczególnych fazach awarii w stosunku do ilości wszystkich dostępnych urządzeń OZE:
  252.  
  253. WITH Device_Failure_Count AS (
  254. SELECT device_id, COUNT(*) AS failure_count
  255. FROM Device_Failures
  256. GROUP BY device_id
  257. )
  258. SELECT df.device_status, COUNT(*) AS device_count, DFC.failure_count, CAST(COUNT(*) AS DECIMAL) / DFC.failure_count * 100 AS percentage
  259. FROM Renewable_Energy_Devices df
  260. JOIN Device_Failure_Count DFC ON df.device_id = DFC.device_id
  261. GROUP BY df.device_status, DFC.failure_count;
  262.  
  263.  
  264. --Na ilu zmianach nie pracowało dane urządzenie OZE (wliczając to zmianę na której zgłoszono awarię i na której uruchomiono ja znów produkcyjnie):
  265.  
  266. SELECT df.device_id, COUNT(DISTINCT df.shift_number) AS downtime_shifts
  267. FROM Device_Failures df
  268. JOIN Servicing_Shifts ss ON df.shift_number = ss.shift_number
  269. GROUP BY df.device_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement