我有几个问题要确定本月有多少IP回来了。如果IP在同一天回来,它不算“回来”。它只计算IP在另一天回来。所以这是我的查询,但我的逻辑或查询都有问题:
SELECT COUNT( ip )
FROM ipAll
WHERE YEAR( DATE ) = '2015'
AND MONTH( DATE ) = '12'
所有IP: 875
SELECT COUNT( DISTINCT ip )
FROM ipAll
WHERE YEAR( DATE ) = '2015'
AND MONTH( DATE ) = '12'
区分IP: 588
本月回归的IP: 875-588 = 287;
SELECT ip, COUNT( ip ) AS matches
FROM ipAll
WHERE YEAR( DATE ) = '2015'
AND MONTH( DATE ) = '12'
GROUP BY ip
HAVING matches >1
ORDER BY matches DESC
返回的行: 104
所以,我有点困惑。第一个结果表示本月有287个IP回来,但第二个结果表明本月有104个IP回来了。我做错了什么,或者我混淆了什么逻辑?
答案 0 :(得分:1)
第二个查询为您提供了不同的IP。
第三个查询告诉您,您有104个ip显示2 或更多次。
这里没有矛盾,你可能有很多ip返回两次以上。第二个和第三个的结果不一定是第一个结果。
答案 1 :(得分:0)
本月回归的IP:875-588 = 287;
有了这个,你假设每个IP只返回一次。如果它只有一个IP回来287次怎么办? 最后一个查询确实告诉你它只有104个IP回来(它们的回报总和将给你287)。 所以我认为你的逻辑错了:)