sql >> Databasteknik >  >> RDS >> Sqlserver

Gruppera bordet i 15 minuters intervaller

;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

sql fioldemo



  1. har många ringt med något som inte är en instans av Sequelize.Model

  2. Varför kan easy_install inte hitta MySQLdb?

  3. Hur ändrar jag MySQL-datakatalog?

  4. Hibernate-session Det gick inte att öppna för transaktionen