【问题标题】:Incorrect Count of IP VisitsIP 访问计数不正确
【发布时间】:2013-06-04 15:43:32
【问题描述】:

这个查询...

SELECT a.*
FROM LicenseHistory a
JOIN (
    SELECT LicenseID, date as date, COUNT(DISTINCT IPAddress) as IPcount
    FROM LicenseHistory 
    WHERE (LicenseID= 24965)
    GROUP BY LicenseID,IPAddress,Date
    /*HAVING COUNT(DISTINCT IPAddress) > 1*/
) b ON (a.LicenseID = b.LicenseID) AND date(a.date) = date(b.date)
order by date desc, LicenseID desc

返回 ...

Date                lic     users   IP Address    country   Count
2013-05-14 13:44:56 24965   15  70.60.96.98 US  1455
2013-05-14 13:44:56 24965   15  70.60.96.98 US  1455
2013-05-14 11:50:34 24965   15  72.252.247.148  JM  111
2013-05-14 11:50:34 24965   15  72.252.247.148  JM  111
2013-03-29 07:40:37 24965   15  184.39.241.223  US  14

计数列显然不正确,因为仅提取不同 IP 的查询返回计数 123(对于 70.60.96.98)。此查询如何达到 1455 的计数?我想计算许可证 24965 在 2013 年 5 月 14 日从 70.60.96.98 到达的次数,以及每个日期列表中每个 ip 的类似次数。

【问题讨论】:

    标签: sql count


    【解决方案1】:

    为什么会有如此复杂的查询

    SELECT count(*)
    FROM LicenseHistory
    WHERE (LicenseID = 24965) AND (IPAddress = '70.60.96.98')
    

    会成功吗?

    【讨论】:

    • 因为您的查询没有告诉我在日期 #z 访问了多少次带有许可证 #y 的 IP #x。事实上,您的查询根本不考虑日期。公平地说,这个问题似乎被切断了,所以我将在上面进行编辑,它是......我想计算许可证 24965 在特定日期从 70.60.96.98 到达的次数。
    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2021-06-20
    • 1970-01-01
    • 2010-10-26
    • 2017-07-23
    相关资源
    最近更新 更多