首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用分区在SQL中创建唯一行in

使用分区在SQL中创建唯一行in
EN

Stack Overflow用户
提问于 2020-01-07 22:21:34
回答 2查看 233关注 0票数 0

我希望有人能告诉我我的语法哪里错了,或者让我知道有没有更好的方法来实现我的目标。我获取了一个大型数据集,并应用了许多标识字段,以供以后对数据进行分组。我想对数据应用一个唯一的'Cohort ID‘,我可以使用它来对数据进行分组。我认为Row_Number() Over (Partition)类型的结构可以工作,但由于某种原因显然不行。我得到的队列I对于我指定的字段是不同的,而它们应该是相同的。我的代码如下:

为了进一步指定我尝试执行的操作,如果下面所选字段中的所有项目对于两个不同的数据行都相等,我希望使用相同的Cohort ID来标记该数据。如果下一行与前两行相同,例如,除了不同的“Issuer”,我希望它获得不同的Cohort ID。

下面的数据示例包含我预期的队列ID

代码语言:javascript
运行
复制
Asset_Type  Account Issuer  Return_Bucket   Age_Bucket  Type_Bucket Risk_Bucket Cohort ID
Equity  Client 1    Bank A  10-15   3-6 months  Financial   Moderate    1
Equity  Client 1    Bank A  10-15   3-6 months  Financial   Moderate    1
Equity  Client 1    Bank A  10-15   6-12 months Financial   Moderate    2
Equity  Client 1    Bank A  10-15   6-12 months Financial   Moderate    2
Equity  Client 1    Bank A  10-15   6-12 months Financial   High    3
Fixed   Client 1    Bank A  10-15   6-12 months Financial   High    4
Equity  Client 1    Bank A  5-10    3-6 months  Financial   Moderate    5



Select
Row_Number() Over(Partition By [Asset_Type],
[Account],
[Issuer],
[Return_Bucket],
[Age_Bucket],
[Type_Bucket],
[Risk_Bucket]
Order by [Account]) Account AS CohortID
into Test_Table_2
from Test_Table_1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-07 23:02:43

您的示例结果表明您需要dense_rank() --没有差距:

代码语言:javascript
运行
复制
Select t.*
       dense_rank() Over (order by [Asset_Type], [Account], [Issuer], [Return_Bucket],
                                   [Age_Bucket], [Type_Bucket], [Risk_Bucket]
                         ) as CohortID
into Test_Table_2
from Test_Table_1 t;

partition by将计数分成不同的组。这意味着1将在每个组中重复。order by只是简单地对它们进行排序。

我假设您也有其他的专栏。表中的重复项通常不是很有用。相反,我建议您删除它们。

票数 1
EN

Stack Overflow用户

发布于 2020-01-07 22:58:10

YOu可以使用RANK,不需要分区:

代码语言:javascript
运行
复制
Select *,
Rank() Over(ORDER By [Asset_Type],
[Account],
[Issuer],
[Return_Bucket],
[Age_Bucket],
[Type_Bucket],
[Risk_Bucket]) AS CohortID
into Test_Table_2
from Test_Table_1
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59630283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档