mysql分组和计数问题求助
比如我有一组关于投诉的数据,第一列是投诉日期(一共5天),第二列是被投诉人id,想查询出每天都有投诉记录的人
注:每个ID一天可能被投诉多次
我的思路是:先根据日期,id分组,汇总出每天、每个人的被投诉数,然后单独只计数每个人,就能找出count=5的,就是5天均有记录的人。
我最初写的sql是:
select a.id ,count(*) from tousu a inner join
(select *,count(*) from tousu group by dates,id) b
on a.id=b.id
group by a.id,a.dates
having count(*)=5;
这个sql的确能筛选出来,但是count那里出了问题,如果不加having count(*)=5这个条件,发现id为A的一条记录是8,原因可能是某一天A被投诉了两次。但我不太清楚体现在sql上是什么逻辑。
希望大神能分析一下我出现问题的原因,还有正确的sql应该怎么写。
下面是建表的数据:
create table TOUSU
(dates varchar(20) not null,
ID varchar(20) not null);
insert into TOUSU (dates, ID) values ('2018-07-04','A');
insert into TOUSU (dates, ID) values ('2018-07-04','A');
insert into TOUSU (dates, ID) values ('2018-07-04','B');
insert into TOUSU (dates, ID) values ('2018-07-04','C');
insert into TOUSU (dates, ID) values ('2018-07-03','A');
insert into TOUSU (dates, ID) values ('2018-07-03','B');
insert into TOUSU (dates, ID) values ('2018-07-03','E');
insert into TOUSU (dates, ID) values ('2018-07-03','F');
insert into TOUSU (dates, ID) values ('2018-07-02','B');
insert into TOUSU (dates, ID) values ('2018-07-02','C');
insert into TOUSU (dates, ID) values ('2018-07-02','E');
insert into TOUSU (dates, ID) values ('2018-07-02','D');
insert into TOUSU (dates, ID) values ('2018-07-01','A');
insert into TOUSU (dates, ID) values ('2018-07-01','C');
insert into TOUSU (dates, ID) values ('2018-07-01','B');
insert into TOUSU (dates, ID) values ('2018-07-01','T');
insert into TOUSU (dates, ID) values ('2018-06-30','A');
insert into TOUSU (dates, ID) values ('2018-06-30','B');
insert into TOUSU (dates, ID) values ('2018-06-30','C');
insert into TOUSU (dates, ID) values ('2018-06-30','D');