witam Was serdecznie i proszę o pomoc z zadaniem
Dane dotyczące logowania do serwera wyglądają następująco:
muszę policzyć średni czas zalogowania na serwerze...
witam Was serdecznie i proszę o pomoc z zadaniem
Dane dotyczące logowania do serwera wyglądają następująco:
muszę policzyć średni czas zalogowania na serwerze...
każdy z wierszy, rekordów odpowiada jednej czynności - zalogowaniu lub wylogowaniu...
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'