【问题标题】:redshift create a field with value based on other columnredshift 根据其他列创建具有值的字段
【发布时间】:2021-08-23 19:54:15
【问题描述】:

我需要根据第二列的值创建一个标志字段。

ID1     ID2     FLAG
1       19      1
1       37      1
2       19      2
2       37      2
2       98      1
3       19      1
4       37      1
5       19      1
5       37      1
6       37      2
6       98      1

即当 ID2 为 98 时 flag 为 1 否则,当他们在 19、37 和 1 时 但是当 ID1 具有所有 ID2 时,98 获得优先级,如上例中的 ID1 = 2。

到目前为止,我正在尝试分组,获取 max() 然后设置值。 我尝试了 RANK() 方法,但 19、37 的排名应该相同,我不确定该怎么做。

提前谢谢..

【问题讨论】:

  • 你的解释确实不太清楚。第三列是您要生成的吗?还是已经在数据中了?
  • 是的,我需要生成第三个字段..

标签: sql amazon-redshift rank flags


【解决方案1】:

如果我理解正确,你想要dense_rank()

select t.*,
       dense_rank() over (partition by id1
                          order by (id2 = 98) desc
                         ) as flag
from t;

【讨论】:

  • 这是否会为 19、37 个 ID 提供相同的排名?
  • @HarinieR 。 . .是的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2023-01-12
  • 2023-01-24
相关资源
最近更新 更多