如何为每天选择不同的IP

时间:2016-08-24 09:17:47

标签: mysql count distinct

我有一个名为 logvisit 的表格,其中的字段包括 ip(varchar(30))日期(日期时间)

ip    date
1.1   2016-08-23 00:05:40
1.1   2016-08-24 00:05:15
1.1   2016-08-24 00:05:20
1.2   2016-08-22 00:01:00
1.2   2016-08-22 00:00:30
1.2   2016-08-23 00:01:00

编辑:我想通过DAY选择所有不同的ip。一个IP可以有几天(如果用户连续三天),一天可以有几个IP(因为我有多个用户)。我只是不想在同一天使用相同的IP。

预期输出(1 ip / 1天):

ip    day
1.1   2016-08-23
1.1   2016-08-24
1.2   2016-08-22
1.2   2016-08-23

我找到了这个帖子SQL group by day, with count,所以作为一个开始我尝试过:

SELECT 
  Convert(char(8), date, 112),
  count(distinct ip)
FROM logvisit
GROUP BY Convert(char(8), date, 112)

这给了我一个意想不到的"附近112的语法错误),count(distinct ip" ..

3 个答案:

答案 0 :(得分:1)

您需要按ip & date

进行分组
SELECT 
  DATE(date) AS d,
  count(ip)
FROM logvisit
GROUP BY d,ip

注意: Date(time_stamp/datetime)将提取日期部分。

如果您想要每天计算不同的ip,那么以下查询将是一个用途:

SELECT 
  DATE(date) AS d,
  count(distinct ip) AS dayWiseDistinctIpCount
FROM logvisit
GROUP BY d

修改

为了得到一对<ip,day>

SELECT 
 DISTINCT ip,
 DATE(date) AS day
FROM logvisit

答案 1 :(得分:1)

SELECT DISTINCT ip, DATE(DATE) as day FROM logvisit GROUP BY DATE(DATE),ip

答案 2 :(得分:0)

尝试这样的事情:

SELECT id, DATE(`date`) AS day, COUNT(DISTINCT ip) AS total_visits
FROM logvisit
GROUP BY DATE(`date`);