Średni czas i niespojn dane- MS SQL

0

witam Was serdecznie i proszę o pomoc z zadaniem

Dane dotyczące logowania do serwera wyglądają następująco:
screenshot-20180222184842.png

muszę policzyć średni czas zalogowania na serwerze...

0

każdy z wierszy, rekordów odpowiada jednej czynności - zalogowaniu lub wylogowaniu...

0

No to musisz pobrać te dane w sposób taki aby mieć w jednej linijce data zalogowania i wylogowania, datediff wyciągasz różnicę i agregujesz avg, np tak:

with cteT as (
select 
  case when wylogowanie is null then 'in' else 'out' end akcja
  , klient
  , case when wylogowanie is null then convert(datetime,data + ' ' + zalogowanie,121) else  convert(datetime,data + ' ' + wylogowanie,121) end dt 
  ,row_number() over (partition by klient order by case when wylogowanie is null then convert(datetime,data + ' ' + zalogowanie,121) else  convert(datetime,data + ' ' + wylogowanie,121) end) as r
  from tab
)

select
    i.klient
    ,i.dt od
    ,o.dt do
    ,datediff(s,i.dt,o.dt) czas
from 
   cteT i
   inner join cteT o on i.klient=o.klient 
                        and i.r=o.r-1 
                        and o.akcja='out'

http://sqlfiddle.com/#!18/81207/14

1 użytkowników online, w tym zalogowanych: 0, gości: 1