使用 MAX Date 显示最新日期

Posted

技术标签:

【中文标题】使用 MAX Date 显示最新日期【英文标题】:Show the most current dateusing MAX Date 【发布时间】:2021-12-28 02:30:45 【问题描述】:

表covidDeaths

Location        Date                    total_cases  total_deaths             
_______________________________________________________________________
United States   2020-01-22 00:00:00.000            1    NULL
United States   2020-01-23 00:00:00.000            1    0
United States   2020-01-24 00:00:00.000            2    1
United States   2020-01-25 00:00:00.000            2    0
United States   2020-01-26 00:00:00.000            5    3
United States   2021-11-11 00:00:00.000     46851529    58626
United States   2021-11-12 00:00:00.000     46991304    139775
United States   2021-11-13 00:00:00.000     47050502    59198
United States   2021-11-14 00:00:00.000     47074080    23578

我遇到了一个让我有点沮丧的问题。我正在使用名为 covidDeaths 的表中位置为美国的最新日期查找 total_cases 和 total_deaths。我知道您可以使用Max() 函数查找文件中的最新日期,所以我尝试过

SELECT MAX(date) AS "Current Date", total_deaths, total_cases 
FROM covidDeaths
WHERE location = 'United States'
GROUP BY total_cases, total_deaths;

我希望它像这样输出一行。

_______________________________________
|Current Date|Total_Deaths|Total_Cases|
|____________|____________|___________|
|2021-11-14  |763092      |47074080   |
|____________|____________|___________|

相反,我得到了

_______________________________________
|Current Date|Total_Deaths|Total_Cases|
|____________|____________|___________|
|2020-01-23  |Null        |1          |
|____________|____________|___________|
|2020-01-24  |Null        |2          |
|____________|____________|___________|

以此类推,直到达到最大值(日期)。

我使用的是 SQL Server 2019。 我希望有人可以向我解释我做错了什么以及为什么它输出多个日期而不是最新的日期。

【问题讨论】:

Why should I provide a Minimal Reproducible Example for a very simple SQL query? 如前所述^^^我们需要查看您的示例数据。 您的“日期”是实际日期还是字符串? @CriticalError 是日期是日期时间数据类型 @KenWhite 感谢您对我刚刚编辑的更正,我希望它被认为是可复制的表格。 【参考方案1】:

使用TOP 查询:

SELECT TOP 1 WITH TIES date AS [Current Date], total_deaths, total_cases
FROM covidDeaths
WHERE location = 'United States'
ORDER BY date DESC;

我在这里使用WITH TIES,以防可能有多条记录具有最近的日期。如果不是,或者您不关心关系,那么您可以简单地使用TOP 1

注意:我认为没有理由在这里使用 GROUP BY,因为您当前的查询没有选择任何聚合。

【讨论】:

我得到了我需要的输出,但我仍然想知道为什么我的查询会显示所有日期而不是最新日期。当我写 SELECT Max(date) FROM covidDeaths;它会告诉我最新的日期,为什么我的查询没有发生这种情况。如果你能解释这将是惊人的,或者只是一个我可以更深入地了解这一点的网站。 您询问了每对死亡/病例的最长日期。这与询问与整个表格的最大日期相对应的死亡/病例不同。 @Eduardo 因为您当前的查询要求死亡和病例的每个组合的最高日期。

以上是关于使用 MAX Date 显示最新日期的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CI Active Record 中按 MAX 日期选择

如何在不使用窗口函数的情况下在大查询中选择 max(date)?

使用Django中的日历搜索和显示结果

在 jquery datepicker 重置为当前日期之前捕获手动输入的日期,同时使用 Max Date 进行限制

在 WHERE IN 子句 SQL 中显示每条记录的 MAX 日期

SQL 在 LEFT JOIN 中获取 MAX 日期时间