Advertisement
JanuszKowalski123

Czas przestoju danego urządzenia w ciągu zadanego okresu czasu, nie wliczając w to sobót i niedziel

Apr 24th, 2024
30
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.45 KB | None | 0 0
  1. "Czas przestoju danego urządzenia w ciągu zadanego okresu czasu, nie wliczając w to sobót i niedziel" - należy zidentyfikować okresy przestoju urządzenia, które nie kolidują z sobotami i niedzielami, a następnie obliczyć sumę czasu przestoju.
  2.  
  3. ######################################################################################
  4. DECLARE @StartDate DATETIME = '2024-01-01';  -- Data początkowa
  5. DECLARE @EndDate DATETIME = '2024-12-31';    -- Data końcowa
  6.  
  7. SELECT device_id,
  8.        SUM(DATEDIFF(MINUTE, failure_start, failure_end)) AS TotalDowntimeMinutes
  9. FROM Device_Failures
  10. WHERE failure_start >= @StartDate AND failure_end <= @EndDate
  11.   AND DATEPART(WEEKDAY, failure_start) NOT IN (1, 7)  -- Wyklucz soboty (7) i niedziele (1)
  12.   AND DATEPART(WEEKDAY, failure_end) NOT IN (1, 7)
  13. GROUP BY device_id;
  14. #############################################################################################
  15.  
  16. @StartDate i @EndDate określają zakres czasu, dla którego chcemy obliczyć czas przestoju.
  17. Warunek WHERE ogranicza wyniki do okresów przestoju, które mieszczą się w zadanym zakresie czasu i nie kolidują z sobotami i niedzielami.
  18. DATEDIFF(MINUTE, failure_start, failure_end) oblicza różnicę czasu między failure_start i failure_end w minutach dla każdego okresu przestoju.
  19. SUM agreguje te różnice czasu dla każdego urządzenia, aby obliczyć łączny czas przestoju.
  20. GROUP BY device_id grupuje wyniki według identyfikatora urządzenia.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement