如何解决在SQL表中获取每个用户ID的最后一个元素
我试图弄清楚如何在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 B
124 12/04/1996 A
123 12/05/1996 D
因此查询将在这种情况下返回:
User ID Last Product Bought
123 D
124 A
等等。我尝试在Teradata中使用Partition By或Window函数,但不知道如何实现它。
感谢您的帮助。
解决方法
在Teradata中,您可以使用row_number()
和qualify
解决每组前1名问题:
select t.*
from mytable t
qualify row_number() over(partition by yser_id order by date desc) = 1
,
应用Teradata的专有语法来过滤窗口聚合:
{
"address": "value1","testware": "value2","status": false,"linestatus": "online","optionalstatus": {
"line1": "offline","line2": "offline",}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。