需要有关此查询的帮助

end*_*igg 1 mysql

这将在 MySQL 中。表由以下字段组成:

Date, ID, blah, blahblah, blahblahblah
Run Code Online (Sandbox Code Playgroud)

我相信主键需要是日期和 ID。

我要运行的查询是针对每个Date,计算所有IDs但仅当这是 ID 显示的最后日期时。

因此,如果该 ID 在 2016 年 9 月 9 日出现在数据库中,但没有出现在 2016 年 9 月 10 日,那么我们会说它消失了,因此将其添加到 2016 年 9 月 9 日的总计数中。

如果该 ID 稍后在 9/11/16 再次出现,当我们再次运行查询时,该 ID 将不再添加到 9/9/16 的计数中。如果在 2016 年 9 月 12 日该 ID 再次消失,那么它将被添加到 2016 年 9 月 11 日的计数中。

这是一些示例数据。我没有为“废话”输入任何数据,因为它与查询无关(我相信):

日期,身份证,等等,等等,等等
2016 年 9 月 8 日,1           
2016 年 9 月 8 日,2           
2016 年 9 月 8 日,3           
2016 年 9 月 8 日,4           
2016 年 9 月 8 日,5           
2016 年 9 月 8 日,6           
2016 年 9 月 8 日,7           
2016 年 9 月 8 日,8           
2016 年 9 月 9 日,1           
2016 年 9 月 9 日,2           
2016 年 9 月 9 日,3           
2016 年 9 月 9 日,4           
2016 年 9 月 9 日,5           
9/9/2016, 9           
2016 年 9 月 9 日,10          
2016 年 9 月 9 日,11          
2016 年 9 月 10 日,2           
2016 年 9 月 10 日,4           
2016 年 9 月 10 日,6           
2016 年 9 月 10 日,11          
2016 年 9 月 10 日,12          
2016 年 9 月 10 日,13          

2016 年 9 月 9 日运行的预期输出为:

日期,最后一天的总 ID
9/8/16,3
9/9/16,8

2016 年 9 月 10 日运行的预期输出为:

日期,最后一天的总 ID
9/8/16,2
9/9/16,4
9/10/16,6

请注意,当查询在 2016 年 9 月 10 日运行时,2016 年 9 月 8 日的总数与在 2016 年 9 月 9 日运行时的总数不同,因为 ID(编号 6)消失后又重新出现。

Jus*_*ave 5

一种选择是使用 anot exists过滤掉以后出现的任何行。

select date, count(*)
  from your_table a
 where not exists( select 1
                     from your_table b
                    where a.id = b.id
                      and b.date > a.date )
 group by date
Run Code Online (Sandbox Code Playgroud)