Announcement

Collapse
No announcement yet.

SQL Abfrage (Grouping, Berechnen von Zeitunterschieden)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage (Grouping, Berechnen von Zeitunterschieden)

    Hallo!

    Ich habe zwei Tabellen (MS SQL Server 2012 Express):
    Tabelle 1: Userstamm
    UserID
    UserName


    Tabelle 2: UserLogs
    UserID
    Log_In (datetime)
    Log_Out (datetime)



    Nun möchte ich eine Auswertung haben, mit folgenden Informationen:
    UserID
    UserName
    Anzahl der Anmeldungen
    Letzte Anmeldung
    durchschnittliche LogZeit (Log_Out - Log_In) in Minuten


    Anzahl Anmeldungen und Letzte Anmeldung bekomme ich hin, aber wie berechne ich die durchschnittliche Logzeit in Minuten?
    Dabei kann es in der Tabelle UserLogs vorkommen, dass Datensätze mit Log_Out = IsNull oder Datensätze mit Log_Out > Log_In vorkommen. Diese sollen nicht berücksichtigt werden.

    Kann mir jemand helfen?

    Vielen Dank

    Marco

  • #2
    [HIGHLIGHT="SQL"]WITH UserLogs
    ( UserID , Log_In , Log_Out
    ) AS
    ( SELECT 1,CONVERT(DATETIME,'2012-04-01',120),CONVERT(DATETIME,'2012-04-02',120) UNION ALL
    SELECT 1,CONVERT(DATETIME,'2012-04-02',120),CONVERT(DATETIME,'2012-04-04',120) UNION ALL
    SELECT 2,CONVERT(DATETIME,'2012-04-01',120),CONVERT(DATETIME,'2012-04-02',120) UNION ALL
    SELECT 1,CONVERT(DATETIME,'2012-04-04',120),CONVERT(DATETIME,'2012-04-03',120) UNION ALL
    SELECT 1,CONVERT(DATETIME,'2012-04-01',120),NULL
    )
    SELECT UserID
    , COUNT (Log_In) AS Anzahl
    , MAX (Log_In) AS Letzte
    , AVG (DATEDIFF (Minute, Log_In, Log_Out) ) AS Average
    FROM Userlogs
    WHERE Log_Out IS NOT NULL
    AND Log_Out > Log_IN
    GROUP BY UserID[/HIGHLIGHT]

    Comment

    Working...
    X