计算访问次数,除了来自2个最大访问者的访问次数

时间:2016-05-12 08:13:52

标签: mysql sql

我有一个网站访问数据库表:

date               ip   
2016/05/12 08:12   26.123.123.2
2016/05/12 08:13   26.123.123.2
2016/05/12 08:20   7.8.13.34
2016/05/12 08:21   1.2.177.9
2016/05/12 08:22   26.123.123.2
2016/05/12 08:40   7.8.13.34

我用以下方式计算访问次数:

select count(ip) from visits where date(date) = date(...)

现在我想要计算每个人的访问次数,但访问次数最多的两个IP 除外。

示例:此处访问次数最多的IP为26.123.123.2和7.8.13.34,因此不应计算在内。结果应该是= 1。

如何用SQL计算?

1 个答案:

答案 0 :(得分:4)

您需要从count中排除ip等于具有最大行数的行。这是一个典型的子查询案例。

试试这个:

   SELECT COUNT(ip) 
     FROM visits
    WHERE ip NOT IN (
                  SELECT ip
                    FROM vistis
                GROUP BY ip
                ORDER BY count(ip) DESC 
                   LIMIT 2
                )
 GROUP BY ip