我有一个包含4列的表
id, name, key, date
1,'A' ,'x1','2015-11-11'
2,'A' ,'x1','2015-11-11'
3,'B' ,'x2','2015-11-11'
4,'B' ,'x2','2015-11-11'
5,'A' ,'x1','2015-11-12'
6,'A' ,'x1','2015-11-12'
7,'B' ,'x2','2015-11-12'
8,'B' ,'x2','2015-11-12'
9,'D' ,'x3','2015-11-12'
我希望按[键]和[日期]分组。我想要的结果是:
2015-11-11 2
2015-11-12 1
2
:日期2015-11-11有4行(1,2,3,4)但重复键,所以当我们只有2行时。
1
:日期2015-11-12有5行(5,6,7,8,9),但有4行(5,6,7,8)重复日期2015-11-11 ,我不想计算器=>我们只有1行(9)
对不起我的英语。我希望你能理解我的问题。
请各方面帮助我。我正在使用mysql。
答案 0 :(得分:1)
select key, date, (select count(*) from tablename t2
where t2.key = t1.key
and t2.date = t1.date
and not exists (select 1 from tablename t3
where t3.key = t2.key
and t3.date < t2.date))
from tablename t1
您可以使用相关的子查询来计算该日期的键。不要计算是否已找到旧日期的日期键值。
替代解决方案:
select t1.key, t1.date, count(*)
from tablename t1
LEFT JOIN (select key, min(date) as date from tablename group by key) t2
ON t2.key = t1.key and t2.date = t1.date
group by t1.key, t1.date