首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >'partition by‘的结果ID?

'partition by‘的结果ID?
EN

Stack Overflow用户
提问于 2017-07-10 17:59:04
回答 2查看 266关注 0票数 2

我正在考虑使用over (partition by xx)的SQL查询。

我想知道如何为我得到的每个分区添加一个具有ID的列。例如,请参阅下表:

代码语言:javascript
复制
Name          Country
---------------------------
Mark          USA
Paul          USA
Jennifer      Canada
Carla         Canada
José          Mexico
Pablo         Peru

在这个查询之后(使用一个假设的ID_PARTITION()函数):

代码语言:javascript
复制
select ID_PARTITION(), row_number() over (partition by country), name, country from tableabove;

我会得到:

代码语言:javascript
复制
ID   Row_number()    Name     Country
_______________________________________
1               1    Mark     USA
1               2    Paul     USA
2               1    Jennifer Canada
2               2    Carla    Canada
3               1    José     Mexico
4               1    Pablo    Peru

关于如何实现这样的东西,有什么线索吗?

干杯,

弗朗西斯

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-10 18:06:51

这样如何:

代码语言:javascript
复制
SELECT DENSE_RANK() OVER ( ORDER BY Country) AS ID
      ,ROW_NUMBER() OVER (PARTITION BY Country ORDER BY Country)  AS RowNumber
      ,name
      ,country
  FROM tableabove
票数 1
EN

Stack Overflow用户

发布于 2017-07-10 18:03:24

您可以使用dense_rank,如下所示:

代码语言:javascript
复制
Select Id_Partition = dense_rank() over(order by country),
       RowNum = row_number() over(partition by country order by name),
       [name], country
 from yourtable
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45009072

复制
相关文章

相似问题

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