我有一个网站访问数据库表:
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计算?
答案 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