仅显示每天的最新日期记录

Posted

技术标签:

【中文标题】仅显示每天的最新日期记录【英文标题】:show only latest date record for each day 【发布时间】:2020-08-03 21:46:52 【问题描述】:

我有一张如下表

ID    apiDate                   totalCases
1     2020-04-18 12:00:00       10
2     2020-04-18 12:00:00       15
3     2020-04-19 12:00:00       20
4     2020-04-19 12:00:00       25      
5     2020-04-19 12:00:00       30
6     2020-04-20 12:00:00       35
7     2020-04-20 12:00:00       40
8     2020-04-20 12:00:00       45  

我想返回每天的最新记录如下

ID    apiDate                   totalCases
2     2020-04-18 12:00:00       15     
5     2020-04-19 12:00:00       30
8     2020-04-20 12:00:00       45  

我添加了另一个名为“dateonly”的列并达到了我的要求

SELECT 
    *
FROM 
    myTable H
WHERE
    `apiDate` = 
    (
        SELECT 
            max(`apiDate`) 
        FROM 
            myTable
        WHERE
            `dateonly` = H.dateonly
    )

我正在寻找不添加列“dateonly”的适当解决方案

【问题讨论】:

【参考方案1】:

你考虑过窗口功能吗?

select ID, apiDate, totalCases
from (select t.*,
             row_number() over (partition by date(apidate) order by apidate desc) as seqnum
      from mytable t
     ) t
where seqnum = 1;

【讨论】:

【参考方案2】:

您使用相关子查询进行过滤的解决方案几乎就在那里。您只需要修复相关性子句,使其匹配当天而不是整个日期和时间

我会这样写:

select t.*
from mytable t
where t.apidate = (
    select max(t1.apidate)
    from mytable t1
    where t1.apidate >= date(t.apidate) and t1.apidate < date(t.apidate) + interval 1 day
)

【讨论】:

以上是关于仅显示每天的最新日期记录的主要内容,如果未能解决你的问题,请参考以下文章

查询仅列出用户的最新记录

根据上次日期选择记录

如何仅返回日期字段上的最新记录,分为两部分

如何在 EF Core 中仅包含相关表的最新记录

ASP 如何将新闻记录按每天记录数分段显示。并统计每天记录数,年月日分段显示 表news 代码如何写!

ms-access:仅显示特定日期内记录的报告