簡體   English   中英

在表中有效查找最后日期-Teradata SQL

[英]Efficiently find last date in a table - Teradata SQL

假設我在Teradata數據庫中有一個相當大的表,“銷售”具有每筆銷售的每日記錄,我想編寫一條SQL語句將其限制為最新日期。 例如,如果今天不是星期一,那么最近的日期將是前一個星期五。

我知道我可以通過以下方法得到結果:

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

我對如何處理子查詢不了解,並且由於Sales是一個大表,如果沒有我可以使用的其他表,將有一種更有效的方法來做到這一點?

如果您具有salesdate的索引,那可能很好。

如果只有一行,那么我建議:

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

特別是,這應該利用salesdate的索引。

如果有多於一行,則將top 1 with ties

獲得前n名的另一種(更靈活的)方法是利用OLAP函數:

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

這將返回具有最大日期的所有行。 如果只希望其中一個切換到ROW_NUMBER。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM