在 table - Teradata SQL 中有效地找到最后一个日期

Efficiently find last date in a table - Teradata SQL

假设我在 Teradata 数据库中有一个相当大的 table,"Sales" 每天都有每次销售的记录,我想写一个 SQL 语句来限制它仅限最新日期。这并不总是前一天,例如,如果是星期一,则最晚日期将是前一个星期五。

我知道我可以通过以下方式得到结果:

SELECT s.*
FROM Sales s
JOIN (
      SELECT MAX(SalesDate) as SalesDate 
      FROM Sales
) sd 
ON s.SalesDate=sd.SalesDt

我不知道它将如何处理子查询,并且由于销售额很大 table 如果没有其他 table 我可以使用,是否会有更有效的方法来执行此操作?

如果您在 salesdate 上有索引,那可能没问题。

如果只有一行,那我推荐:

select top 1 s.*
from sales s
order by salesdate desc;

特别是,这应该使用 salesdate 上的索引。

如果多于一行,使用top 1 with ties

获得 top n 的另一种(更灵活)方法是利用 OLAP 函数:

SELECT *
FROM Sales s
QUALIFY
  RANK() OVER (ORDER BY SalesDate DESC) = 1

这将 return 所有 具有最大日期的行。如果您只想要其中之一,请切换到 ROW_NUMBER.