Sql rank函数仅返回日期为红移的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

我正在红移中运行下面的代码。我想在客户根据日期购买产品时获得订单的排名。每次购买都有一个唯一的ticketid,每个客户都有一个唯一的customer_uuid,每个产品都有一个唯一的product_uID。下面的代码为所有排名返回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