Sql rank函数仅返回日期为红移的1
我正在红移中运行下面的代码。我想在客户根据日期购买产品时获得订单的排名。每次购买都有一个唯一的ticketid,每个客户都有一个唯一的customer_uuid,每个产品都有一个唯一的product_uID。下面的代码为所有排名返回1,我不知道为什么。我的代码中是否有错误,或者在红移中按日期字段排序是否有问题?是否有人看到如何修改此代码以更正此问题 代码: 数据: 输出:Sql rank函数仅返回日期为红移的1,sql,amazon-redshift,window-functions,Sql,Amazon Redshift,Window Functions,我正在红移中运行下面的代码。我想在客户根据日期购买产品时获得订单的排名。每次购买都有一个唯一的ticketid,每个客户都有一个唯一的customer_uuid,每个产品都有一个唯一的product_uID。下面的代码为所有排名返回1,我不知道为什么。我的代码中是否有错误,或者在红移中按日期字段排序是否有问题?是否有人看到如何修改此代码以更正此问题 代码: 数据: 输出: customer_uuid product_id ticketid date rank 1
customer_uuid product_id ticketid date rank
1 2 1 1/1/18 1
1 2 2 1/2/18 1
1 2 3 1/3/18 1
期望输出:
customer_uuid product_id ticketid date rank
1 2 1 1/1/18 1
1 2 2 1/2/18 2
1 2 3 1/3/18 3
我想在客户根据日期购买产品时获得订单的排名。每次购买都有一个唯一的ticketid,每个客户都有一个唯一的客户id,每个产品都有一个唯一的产品id
基本上,您有唯一的(客户id、产品id、票证id)
元组。如果将它们用作分区,则列组将始终为1
,因为每个分区只有一条记录
您只需从分区中删除票证id
:
rank() over(
partition by customer_uuid, product_id
order by date
) as rank
注意:rank()
将为共享相同(客户id、产品id、日期)的记录提供同等的位置。
我想在客户根据日期购买产品时获得订单的排名。每次购买都有一个唯一的ticketid,每个客户都有一个唯一的客户id,每个产品都有一个唯一的产品id
基本上,您有唯一的(客户id、产品id、票证id)
元组。如果将它们用作分区,则列组将始终为1
,因为每个分区只有一条记录
您只需从分区中删除票证id
:
rank() over(
partition by customer_uuid, product_id
order by date
) as rank
注意:
rank()
将为共享相同(客户id、产品id、日期)的记录提供相同的位置首先,您在分区中有票证id
,这使得每一行都是唯一的
其次,您使用的是rank()
。如果要枚举,是否要行号()
首先,在分区by
中有ticket\u id
,这使得每一行都是唯一的
其次,您使用的是rank()
。如果要枚举,是否要行号()
rank() over(
partition by customer_uuid, product_id
order by date
) as rank
row_number() over(partition by customer_uuid, product_id order by date asc) as rank