按2列查询分组

时间:2015-11-16 07:45:12

标签: mysql sql

我有一个包含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。

1 个答案:

答案 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