mysql - 按2列分组查询

标签 mysql sql

我有 1 个包含 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'

我想要按 [key] 和 [date] 进行分组。我想要的结果是:

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。

最佳答案

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

关于mysql - 按2列分组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33730515/

相关文章:

mysql - 无法将 Liferay 门户移动/迁移到其他服务器

mysql - 升级到 Laravel 7 后不能再使用 mysqldump

php - 如何将此字符串存储为mysql中的有效json(utf8_encode和htmlentities没有帮助)

mysql - Sql选择数据Mysql报错

sql - 按 DESC 反向结果排序

sql - Scala Anorm 字符串替换是否会清理输入?

sql - MySQL "in clause"内的项目数

mysql - 使用 MySQL,是否有必要按照与索引中相同的顺序提及列?

sql - Foreach id 在一个表中,在另一个表中插入行

sql - 如何获取每个空值的行号?