[MsSQL] statistieken

Pagina: 1
Acties:

  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Ik heb een tabel statistieken. Hierin wordt per pagina opgeslagen wanneer een bepaalde sessie van een bezoeker hier is geweest. deze ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
PaginaID    SessieID    Tijdstip 
----------- ----------- -------- 
1           1           11:00:00
2           1           11:05:00
3           1           11:10:00
1           2           21:00:00
2           2           21:10:00
3           2           21:15:00

Ik wil de gemiddelde bezoektijd per pagina. In mijn voorbeeld is dit voor pagina 1 (10+5)/2 = 7.5 minuten, voor pagina 2 is dit (5+5)/2 = 5 minuten.

Ik heb werkelijk van alles al geprobeerd. Het dichtste bij kom ik volgens mij met onderstaande querie, waarin ik per pagina de duur van het bezoek bereken:
code:
1
2
3
4
5
6
7
8
SELECT    s1.PaginaID
    , s1.SessieID
    , (SELECT RIGHT(CONVERT(varchar, MIN (s2.Tijdstip) - s1.Tijdstip, 108), 5)
        FROM Statistieken s2
        WHERE s2.SessieID = s1.SessieID
        AND s2.Tijdstip > s1.TijdStip) as duur
FROM         Statistieken s1
ORDER BY SessieID, Tijdstip
Het resultaat hiervan is:
code:
1
2
3
4
5
6
7
8
PaginaID    SessieID    duur  
----------- ----------- ----- 
1           1           05:00
2           1           05:00
3           1           NULL
1           2           10:00
2           2           05:00
3           2           NULL

Kan iemand hier in 1 querie het gemiddelde van berekenen? _/-\o_
Of ben ik echt gedoemd tot de tijdelijke tabellen :(

Problem Exists Between Chair And Keyboard


  • whoami
  • Registratie: December 2000
  • Laatst online: 23:03
Je kan met de AVG functie aan de slag.
Sql Tutorial

[ Voor 67% gewijzigd door whoami op 25-11-2003 18:10 ]

https://fgheysels.github.io/


  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
whoami schreef op 25 november 2003 @ 18:09:
Je kan met de AVG functie aan de slag.
Sql Tutorial
ik weet hoe de AVG functie werkt, bedankt.

Wat ik niet voor elkaar krijg is mijn bovenstaande zo te herschrijven dat de subselect niet meer nodig is. Op een subselect werkt de AVG functie nl. niet.
Hiervoor kan ik het resultaat van mijn eerste query in een tijdelijke tabel zetten en hier de avg functie op los laten, maar het moet m.i. t.b.v. de performance in een enkele query lukken/kunnen.

Problem Exists Between Chair And Keyboard


  • majornono
  • Registratie: Juni 2002
  • Laatst online: 04-04 23:16
Niemand?

Het enige wat ik tot nu toe bereikt heb en werkt is van de getoonde query een view gemaakt. Hierin staan dan voor alle pagina's de bezoekduur per sessie. Hierop kan ik dan wel een AVG van de duur doen, gegroupeerd op paginaID.

Maar het moet m.i. nog steeds in een enkele query te doen zijn

Problem Exists Between Chair And Keyboard