Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Grupuj stół w 15-minutowe interwały

;with cte_max as 
(
   select dateadd(mi, -15, max(StatusEndDateTime)) as EndTime, min(StatusSetDateTime) as StartTime
   from AgentActivityLog
), times as
(
    select StartTime as Time from cte_max
    union all
    select dateadd(mi, 15, c.Time)
    from times as c
        cross join cte_max as cm
    where c.Time <= cm.EndTime
)
select
    t.Time, A.UserID, A.Status,
    case
        when t.Time = A.StatusEndDateTime then 0
        else A.StatusDuration / (count(*) over (partition by A.StatusSetDateTime, A.UserID, A.Status) - 1)
    end as Duration
from AgentActivityLog as A
    left outer join times as t on t.Time >= A.StatusSetDateTime and t.Time <= A.StatusEndDateTime

demonstracja skrzypiec sql



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak poprawić funkcję Replace w funkcji CLR?

  2. Jak znaleźć wszystkie naruszenia ograniczeń w bazie danych SQL Server

  3. SQL Server:Przykłady danych ciągu PIVOTing

  4. Zdefiniuj kroki dla kursora SQL Server — samouczek SQL Server / TSQL

  5. Jak zwrócić wszystkie wyłączone ograniczenia kontrolne w programie SQL Server (przykład T-SQL)