mysql查询distinct跟count使用技巧

本篇博客将为大家讲解mysql查询distinct跟count使用技巧

      昨天同事反馈统计有问题,我便开始排查并修复这个BUG,但这个过程却不是很顺利,博主也是在这个地方被坑了一把,好在最后成功梳理了问题所在,重新写了查询语句,成功排除这个BUG,今天也顺便把这个语句记录下来,跟大家分享。

       首先先看看我们的数据结构:

1.png

     使用技巧:

1、查看某一天IP去重的统计数量

SELECT  count(DISTINCT(`ip`) ) FROM `xykadmin`.`pv` WHERE `yemianid` =1910 and  
`visit_time` >='2018-09-10 00:00:00' and `visit_time` <='2018-09-10 23:59:59'


2、查看某一天IP去重按24小时分组统计数量

SELECT
	DATE_FORMAT(`visit_time`, '%H') AS min,
	COUNT(DISTINCT(`ip`))
FROM
	(
		SELECT DISTINCT
			(`ip`) AS ip,
			`visit_time`
		FROM
			`xykadmin`.`pv`
		WHERE
			`yemianid` = 1910
		AND `visit_time` >= '2018-09-10 00:00:00'
		AND `visit_time` <= '2018-09-10 23:59:59'
		GROUP BY 1
	) a
GROUP BY
	min


3、查看某一天IP去重按10分钟分组统计数量

SELECT
	substring(`visit_time`, 12,4) AS min,
	COUNT(DISTINCT(`ip`))
FROM
	(
		SELECT DISTINCT
			(`ip`) AS ip,
			`visit_time`
		FROM
			`xykadmin`.`pv`
		WHERE
			`yemianid` = 1910
		AND `visit_time` >= '2018-09-10 00:00:00'
		AND `visit_time` <= '2018-09-10 23:59:59'
		GROUP BY 1
	) a
GROUP BY
	min

      以上这三个查询便可以进行IP去重统计,相信大家在日常开发中,可能会遇到,所以博主将他们都记录下来,这样方便大家参考查阅。