Redshift上的Rank()窗口函数覆盖多列,而不是1或2



我想在Redshift数据库上使用rank((窗口函数对特定的多列进行排名。代码应检查每行的多个列,并为所有列中具有相同值的行分配相同的秩。

在以下链接中找到的示例图像:

https://ibb.co/GJv1xQL

有18个不同的行,但是根据我想要应用的排名,排名显示了3个不同的列。

我试过了:

选择tbl*,dense_rank((over(partition by secondary _id order by created_on,type1,type2,money,amount nulls last(作为rank来自表tbl其中secondary _id='92d30f87-b2da-45c0-bdf7-c5ca96fe5ea6'

但分配的等级是错误的,然后我尝试了:

选择tbl*,dense_rank((over(partitionbysecondary_id,created_on,type1,type2,money,amount(作为rank来自表tbl其中secondary _id='92d30f87-b2da-45c0-bdf7-c5ca96fe5ea6'

但是,在每一行的每一个地方,这个指定的秩都为1。

我找到了解决这个问题的方法。所有感兴趣列的顺序都失败的原因是,时间戳列包含以毫秒为单位的不同值,这在查看数据时并不明显。所以我只考虑了时间戳,直到几秒钟,它才起作用!因此,我将created_on列转换为date_trunc('s',cd.created_on(.

从表tbl中选择tbl.*,dense_rank((over(partition by secondary_id order by date_trunc('s',created_on(,type1,type2,money,amount nulls last(作为秩,其中secondary_id='92d30f87-b2da-45c0-bdf7-c5ca96fe5ea6'

最新更新