sql >> Databáze >  >> RDS >> Sqlserver

Seskupte stůl do 15minutových intervalů

;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

ukázka houslí sql



  1. Jak zjistit, zda je název sloupce vyhrazeným klíčovým slovem v různých databázích

  2. Efektivní způsob výpočtu procenta podobnosti mezi soubory dat

  3. PHP Připravené přihlášení k výpisu

  4. Jak mohu změnit pořadí sloupců v editoru dotazů MySQL?