获取SQL表中每个用户ID的最后一个元素
我正试图弄清楚如何在SQL中执行以下操作(我专门在Teradata中工作)。根据下表中的用户ID、交易日期和购买的物品,我试图找出每个用户ID如何获得最后购买的物品,例如:获取SQL表中每个用户ID的最后一个元素,sql,datetime,teradata,greatest-n-per-group,window-functions,Sql,Datetime,Teradata,Greatest N Per Group,Window Functions,我正试图弄清楚如何在SQL中执行以下操作(我专门在Teradata中工作)。根据下表中的用户ID、交易日期和购买的物品,我试图找出每个用户ID如何获得最后购买的物品,例如: User ID Date Product 123 12/01/1996 A 123 12/02/1996 B 123 12/03/1996 C 124 12/01/1996
User ID Date Product
123 12/01/1996 A
123 12/02/1996 B
123 12/03/1996 C
124 12/01/1996 B
124 12/04/1996 A
123 12/05/1996 D
因此,在这种情况下,查询将返回:
User ID Last Product Bought
123 D
124 A
等等。我尝试在Teradata中使用分区依据或窗口函数,但不知道如何实现它
感谢您的帮助。在Teradata中,您可以使用
行号()
和限定
来解决此每组排名前1的问题:
select t.*
from mytable t
qualify row_number() over(partition by yser_id order by date desc) = 1
在Teradata中,您可以使用
row_number()
和qualify
来解决这一每组排名前1的问题:
select t.*
from mytable t
qualify row_number() over(partition by yser_id order by date desc) = 1
将Teradata的专有语法应用于筛选窗口聚合:
select *
from tab
qualify
row_number()
over (partition by User_ID -- each user
order by Date_col desc) = 1 -- lastest row
将Teradata的专有语法应用于筛选窗口聚合:
select *
from tab
qualify
row_number()
over (partition by User_ID -- each user
order by Date_col desc) = 1 -- lastest row