统计截止当天只出现两次的用户ID

MySql 码拜 8年前 (2017-05-03) 1360次浏览
各位大拿,如题统计截止当天只出现两次的用户ID 同一天出现两次只算一次,查询结果如下
日期                     人数
2017-03-20         0
2017-03-21         1
2017-03-22          2
注解:如下表当统计20号时,没有两次出现的uid 所以为0
统计21号的人数时,过去出现过一次的只有uid为10这一人,这一天出现两次uid10 只算一次

CREATE TABLE `recharge` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` int(11) DEFAULT NULL,
  `dt` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;
-- --
-- Records of recharge
-- --
INSERT INTO `recharge` VALUES ("1", "10", "2017-03-20");
INSERT INTO `recharge` VALUES ("2", "11", "2017-03-20");
INSERT INTO `recharge` VALUES ("3", "10", "2017-03-21");
INSERT INTO `recharge` VALUES ("12", "10", "2017-03-21");
INSERT INTO `recharge` VALUES ("4", "12", "2017-03-21");
INSERT INTO `recharge` VALUES ("10", "13", "2017-03-21");
INSERT INTO `recharge` VALUES ("11", "14", "2017-03-21");
INSERT INTO `recharge` VALUES ("9", "15", "2017-03-21");
INSERT INTO `recharge` VALUES ("5", "10", "2017-03-22");
INSERT INTO `recharge` VALUES ("6", "14", "2017-03-22");
INSERT INTO `recharge` VALUES ("7", "15", "2017-03-22");
INSERT INTO `recharge` VALUES ("8", "11", "2017-03-22");
解决方案

200

22号的,测试数据的结果应该是0吧?

SELECT t1.dt,
(select COUNT(1) as 人数 from (
select uid,dt,COUNT(DISTINCT id) as 人数 
from recharge GROUP BY uid,dt )t
where t.人数  = 2 and t.dt = t1.dt)as 人数
FROM (SELECT DISTINCT dt from recharge)t1

统计截止当天只出现两次的用户ID


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明统计截止当天只出现两次的用户ID
喜欢 (0)
[1034331897@qq.com]
分享 (0)