我有一个名为 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" ..
答案 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`);