Advertisement
JanuszKowalski123

oze5

Apr 15th, 2024
21
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.90 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.  
  86. -- Tworzenie tabeli klientów
  87.  
  88. CREATE TABLE Customers (
  89. customer_id INT PRIMARY KEY,
  90. name VARCHAR(255),
  91. email VARCHAR(255),
  92. phone VARCHAR(20),
  93. address VARCHAR(255)
  94. );
  95.  
  96. -- Wstawianie danych do tabeli klientów
  97. INSERT INTO Customers (customer_id, name, email, phone, address)
  98. VALUES
  99. (1, 'John Doe', '[email protected]', '123456789', '123 Main St'),
  100. (2, 'Jane Smith', '[email protected]', '987654321', '456 Elm St'),
  101. (3, 'Michael Johnson', '[email protected]', '555123456', '789 Oak St'),
  102. (4, 'Emily Brown', '[email protected]', '444987654', '321 Pine St'),
  103. (5, 'William Wilson', '[email protected]', '789456123', '654 Birch St'),
  104. (6, 'Olivia Taylor', '[email protected]', '987123456', '987 Maple St'),
  105. (7, 'James Martinez', '[email protected]', '321654987', '159 Cedar St'),
  106. (8, 'Emma Anderson', '[email protected]', '666333999', '753 Walnut St'),
  107. (9, 'Noah Thomas', '[email protected]', '222333444', '852 Spruce St'),
  108. (10, 'Ava Hernandez', '[email protected]', '111222333', '369 Cherry St'),
  109. (11, 'Sophia Lopez', '[email protected]', '777888999', '741 Elm St'),
  110. (12, 'Matthew Gonzalez', '[email protected]', '222111333', '258 Oak St'),
  111. (13, 'Isabella Perez', '[email protected]', '666777888', '951 Pine St'),
  112. (14, 'Jacob Robinson', '[email protected]', '999888777', '753 Maple St'),
  113. (15, 'Ethan Lee', '[email protected]', '111222333', '852 Cedar St'),
  114. (16, 'Oliver Walker', '[email protected]', '444555666', '963 Walnut St'),
  115. (17, 'Daniel Hall', '[email protected]', '888777666', '357 Birch St'),
  116. (18, 'Liam Young', '[email protected]', '999888777', '159 Spruce St'),
  117. (19, 'Charlotte Hernandez', '[email protected]', '333222111', '456 Cherry St'),
  118. (20, 'Amelia Moore', '[email protected]', '222333444', '789 Elm St'),
  119. (21, 'Benjamin Nelson', '[email protected]', '444555666', '357 Pine St'),
  120. (22, 'Lucas Hill', '[email protected]', '111222333', '852 Maple St'),
  121. (23, 'Mia King', '[email protected]', '555666777', '963 Cedar St'),
  122. (24, 'Harper Baker', '[email protected]', '777888999', '357 Walnut St'),
  123. (25, 'Evelyn Adams', '[email protected]', '999888777', '456 Birch St');
  124.  
  125. INSERT INTO Customers (customer_id, name, email, phone, address)
  126. VALUES (26, 'John Doe', '[email protected]', '123456789', '556 Main St'),
  127. (27, 'Jane Smith', '[email protected]', '987654321', '431 Elm St');
  128.  
  129.  
  130.  
  131.  
  132. -- Tworzenie tabeli firm serwisowych
  133.  
  134. CREATE TABLE Servicing_Companies (
  135. company_id INT PRIMARY KEY,
  136. name VARCHAR(255),
  137. working_hours VARCHAR(255) -- Można to dostosować w zależności od potrzeb
  138. );
  139.  
  140. -- Wstawianie danych do tabeli firm serwisowych
  141.  
  142. INSERT INTO Servicing_Companies (company_id, name, working_hours)
  143. VALUES (1, 'Company Y', '6:00-14:00, 14:00-22:00, 22:00-6:00');
  144.  
  145.  
  146.  
  147.  
  148. -- Tworzenie tabeli zmian serwisowych
  149.  
  150. CREATE TABLE Servicing_Shifts (
  151. shift_number INT PRIMARY KEY IDENTITY,
  152. shift_date DATE,
  153. shift_type INT CHECK (shift_type >= 1 AND shift_type <= 3),
  154. start_time TIME,
  155. end_time TIME
  156. );
  157.  
  158. -- Wstawianie danych do tabeli zmian serwisowych (poniedziałek - sobota)
  159. INSERT INTO Servicing_Shifts (shift_date, shift_type, start_time, end_time) VALUES
  160. ('2024-04-01', 1, '06:00:00', '14:00:00'),
  161. ('2024-04-01', 2, '14:00:00', '22:00:00'),
  162. ('2024-04-01', 3, '22:00:00', '06:00:00'),
  163. ('2024-04-02', 1, '06:00:00', '14:00:00'),
  164. ('2024-04-02', 2, '14:00:00', '22:00:00'),
  165. ('2024-04-02', 3, '22:00:00', '06:00:00'),
  166. ('2024-04-03', 1, '06:00:00', '14:00:00'),
  167. ('2024-04-03', 2, '14:00:00', '22:00:00'),
  168. ('2024-04-03', 3, '22:00:00', '06:00:00'),
  169. ('2024-04-04', 1, '06:00:00', '14:00:00'),
  170. ('2024-04-04', 2, '14:00:00', '22:00:00'),
  171. ('2024-04-04', 3, '22:00:00', '06:00:00'),
  172. ('2024-04-05', 1, '06:00:00', '14:00:00'),
  173. ('2024-04-05', 2, '14:00:00', '22:00:00'),
  174. ('2024-04-05', 3, '22:00:00', '06:00:00'),
  175. ('2024-04-06', 1, '06:00:00', '14:00:00'),
  176. ('2024-04-06', 2, '14:00:00', '22:00:00'),
  177. ('2024-04-06', 3, '22:00:00', '06:00:00');
  178.  
  179.  
  180.  
  181. -- Tworzenie tabeli napraw
  182.  
  183. CREATE TABLE Repairs (
  184. repair_id INT PRIMARY KEY IDENTITY,
  185. device_id NVARCHAR(26),
  186. repair_start DATETIME,
  187. repair_end DATETIME,
  188. repair_description NVARCHAR(255),
  189. FOREIGN KEY (device_id) REFERENCES Renewable_Energy_Devices(device_id)
  190. );
  191.  
  192. -- Wstawianie danych do tabeli napraw
  193.  
  194. DECLARE @i INT = 1
  195. WHILE @i <= 500
  196. BEGIN
  197. INSERT INTO Repairs (device_id, repair_start, repair_end, repair_description)
  198. VALUES (CONCAT(@i, '2345678901234567890123456'), DATEADD(DAY, -@i, GETDATE()), DATEADD(DAY, -@i+1, GETDATE()), 'Naprawa urządzenia');
  199. SET @i = @i + 1
  200. END
  201.  
  202.  
  203.  
  204.  
  205. --RAPORTY ####################################################3
  206.  
  207. --Na jakiej zmianie dane urządzenie OZE uległo awarii:
  208.  
  209. SELECT df.device_id, df.shift_number
  210. FROM Device_Failures df
  211. ORDER BY df.failure_start;
  212.  
  213.  
  214. --Na jakiej zmianie urządzenie OZE zostało naprawione:
  215.  
  216. SELECT r.device_id, df.shift_number
  217. FROM Repairs r
  218. JOIN Device_Failures df ON r.device_id = df.device_id
  219. WHERE r.repair_start BETWEEN df.failure_start AND df.failure_end
  220. ORDER BY r.repair_start;
  221.  
  222.  
  223. --Jaki był czas przestoju danego urządzenia OZE w ciągu zadanego okresu czasu:
  224.  
  225. SELECT df.device_id, SUM(DATEDIFF(HOUR, df.failure_start, df.failure_end)) AS downtime_hours
  226. FROM Device_Failures df
  227. GROUP BY df.device_id;
  228.  
  229.  
  230. --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):
  231.  
  232. SELECT df.device_id, SUM(DATEDIFF(HOUR, df.failure_start, df.failure_end)) AS downtime_hours
  233. FROM Device_Failures df
  234. JOIN Servicing_Shifts ss ON df.shift_number = ss.shift_number
  235. WHERE DATENAME(WEEKDAY, df.failure_start) NOT IN ('Saturday', 'Sunday')
  236. GROUP BY df.device_id;
  237.  
  238.  
  239. --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):
  240.  
  241. SELECT SUM(downtime_hours) AS total_downtime_hours
  242. FROM (
  243. SELECT df.device_id, SUM(DATEDIFF(HOUR, df.failure_start, df.failure_end)) AS downtime_hours
  244. FROM Device_Failures df
  245. JOIN Servicing_Shifts ss ON df.shift_number = ss.shift_number
  246. WHERE DATENAME(WEEKDAY, df.failure_start) NOT IN ('Saturday', 'Sunday')
  247. GROUP BY df.device_id
  248. ) AS downtime_per_device;
  249.  
  250.  
  251.  
  252. --Jaki jest procentowy udział urządzeń OZE w poszczególnych fazach awarii w stosunku do ilości wszystkich dostępnych urządzeń OZE:
  253.  
  254. WITH Device_Failure_Count AS (
  255. SELECT device_id, COUNT(*) AS failure_count
  256. FROM Device_Failures
  257. GROUP BY device_id
  258. )
  259. SELECT df.device_status, COUNT(*) AS device_count, DFC.failure_count, CAST(COUNT(*) AS DECIMAL) / DFC.failure_count * 100 AS percentage
  260. FROM Renewable_Energy_Devices df
  261. JOIN Device_Failure_Count DFC ON df.device_id = DFC.device_id
  262. GROUP BY df.device_status, DFC.failure_count;
  263.  
  264.  
  265. --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):
  266.  
  267. SELECT df.device_id, COUNT(DISTINCT df.shift_number) AS downtime_shifts
  268. FROM Device_Failures df
  269. JOIN Servicing_Shifts ss ON df.shift_number = ss.shift_number
  270. GROUP BY df.device_id;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement