检索唯一访问sql不工作mysql

zphenhs4  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(307)

我有这张table

visitors: ip,last_date (datetime)

当一个不同的ip在某一天进入该站点时,它会插入一个新行,无论该ip是否再次进入。
通过这个sql语句,我检索我站点中所有唯一的ip访问。它适用于特定的一天,例如今天(26/05/2020),并按ip分组

SELECT  v.*, max(last_date) as last_date1
  FROM visitors as v
  WHERE date(v.last_date) = :today
  GROUP BY v.ip 
  ORDER BY last_date1 DESC

现在我想做一个小日报

SELECT 
 COUNT(*) as count,
 DATE(last_date) AS last_date1
 FROM visitors 
 WHERE 1
 GROUP BY YEAR(last_date), MONTH(last_date), DAY(last_date)
 ORDER BY last_date1 DESC
``` `count` 检索一个特定ip在一天中输入的所有时间。我不想把它算作1。
输出

26/05/2020 76455
25/05/2020 34561
24/05/2020 45642

我要检索唯一的ip访问。不是每个ip在一天中输入的次数的总和。
预期结果

26/05/2020 676
25/05/2020 543
24/05/2020 711

我怎样才能解决这个问题?
1bqhqjot

1bqhqjot1#

我认为你想要 count(distinct ip) .

select date(last_date) visit_day, count(distinct ip) no_visiting_ip
from visitors   
group by date(last_date)
order by visit_day desc

这计算了有多少独特的 ip 他每天都去参观这个地方。如果你想要访问的总次数(不管是否相同 ip 多次访问),然后您可以使用 count(*) 相反。

shstlldc

shstlldc2#

我想你只需要一个集合:

SELECT date(last_date), count(*)
FROM visitors v
GROUP BY date(last_date)
ORDER BY date(last_date) DESC;

相关问题