如何获得每个唯一列的特定行数?

12 浏览
0 Comments

如何获得每个唯一列的特定行数?

我使用的是PostgreSQL,有两列Country和Name。我想获取每个国家的x个人名。例如,如果我的数据如下所示:\n

Name    Country
"John"  "US"
"Kim"   "KR"
"Mike"  "US"
"Park"  "KR"
"Kim"   "US"
"Doe"   "RU"
"Pou"   "KR"
"John"  "RU"
"Sam"   "RU"
 ...    ...
 ...    ...

\n假设我想获取每个国家的2个人名:\n

Name    Country
"John"  "US"
"Mike"  "US"
"Park"  "KR"
"Pou"   "KR"
"Sam"   "RU"
"Doe"   "RU"

\n有没有办法做到这种事情?

0
0 Comments

问题出现原因:

在给定的表中,需要按照每个唯一列获取指定数量的行。通过使用row_number()函数可以实现这个功能。

解决方法:

可以使用以下代码来实现:

select * from
(
SELECT Name, Country, row_number() over(partition by country order by name) as rn
FROM [table] 
)A where rn<=10

这段代码的作用是在表中选择Name和Country列,并使用row_number()函数为每个唯一的Country列的Name列进行排序。然后,通过将结果命名为A,并筛选出rn小于等于10的记录,以获取每个唯一列的指定数量的行。

0