如何获得每个唯一列的特定行数?
如何获得每个唯一列的特定行数?
我使用的是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有没有办法做到这种事情?
问题出现原因:
在给定的表中,需要按照每个唯一列获取指定数量的行。通过使用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的记录,以获取每个唯一列的指定数量的行。