为什么我的SQL Count语句计数太多次

时间:2013-11-25 15:14:34

标签: sql

我有一个查询应该计算用户根据唯一会话ID登录我们软件的两个不同版本的次数。然而,我在外部选择语句中的计数太多了。例如,我为一个用户获得31000个会话,这是不正确的。它应该更像是40。为什么会发生这种情况?

SELECT X.FirstName, X.LastName, X.CompanyName, X.AQ8Sessions, AQ360Sessions = COUNT(RRUI.SessionId)
 FROM(
    SELECT RRUI.UserId, RRUI.FirstName, RRUI.LastName, RRUI.CompanyName, COUNT(distinct RRUI.SessionId) AQ8Sessions
    FROM Authentication.dbo.RegReportUserInfo RRUI
    INNER JOIN Authentication.dbo.RegReportSessions RRS
        ON RRUI.SessionId = RRS.SessionId
    INNER JOIN WebCatalog.Published.People P
        ON P.PKey = RRUI.UserId
    WHERE RRUI.ClientType = 'aq8' AND RRS.ExpiresAt <= '2013-11-24 23:59:59.999'
        AND RRS.ExpiresAt >= '2013-11-18 00:00:00.000' AND RRUI.CompanyName NOT LIKE 'AutoQuotes%'
        AND P.EMail NOT LIKE '%@aqnet.com'
    GROUP BY RRUI.FirstName, RRUI.LastName, RRUI.CompanyName, RRUI.UserId
) X
INNER JOIN Authentication.dbo.RegReportSessions RRS
    ON RRS.UserId = X.UserId
    AND RRS.ExpiresAt <= '2013-11-24 23:59:59.999'
    AND RRS.ExpiresAt >= '2013-11-18 00:00:00.000'
LEFT OUTER JOIN Authentication.dbo.RegReportUserInfo RRUI
    ON X.UserId = RRUI.UserId AND RRUI.ClientType = 'aq360'
GROUP BY X.FirstName, X.LastName, X.CompanyName, X.AQ8Sessions
ORDER BY X.AQ8Sessions DESC, COUNT(RRUI.SessionId) DESC

1 个答案:

答案 0 :(得分:0)

在没有看到数据的情况下很难肯定地说,但我希望其中一个或两个能解决它:

COUNT(DISTINCT RRUI.SessionId)

和/或

INNER JOIN Authentication.dbo.RegReportUserInfo 

你在哪里

LEFT OUTER JOIN Authentication.dbo.RegReportUserInfo