我在数据库中有一个表statistics:
CREATE TABLE `statistics` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`timestamp` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`address` TEXT NOT NULL,
`ip` TEXT DEFAULT NULL,
PRIMARY KEY (`id`)
)为了获得每天的网页访问,我使用以下查询:
SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), COUNT(*)
FROM `statistics`
GROUP BY 1
ORDER BY 1 ASC如何修改查询以获得IP唯一的日常访问?
非常感谢!
发布于 2017-03-23 13:11:22
将其更改为计数不同的IP,如下所示
SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), COUNT(DISTINCT `ip`)
FROM `statistics`
GROUP BY 1
ORDER BY 1 ASC如果要将null视为单个IP,则必须进行稍微不同的查询。
SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), COUNT(DISTINCT `ip`) + SUM(ISNULL(`ip`))
FROM `statistics`
GROUP BY 1
ORDER BY 1 ASC发布于 2017-03-23 13:12:28
您可以将IP添加到SELECT和GROUP BY中,例如:
SELECT DATE_FORMAT(`timestamp`, "%Y-%m-%d"), IP, COUNT(*)
FROM `statistics`
GROUP BY 1, 2
ORDER BY 1 ASChttps://stackoverflow.com/questions/42976964
复制相似问题