如何按州[暂停]找到一个国家的第三大人口

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (19)

我有一个表,其中有三列zipcode,state,total_population。

ZIPCODE STATE   POPULATION
11937   36  15511
11941   36  1822
11940   36  4933
12435   36  280
12063   36  441
64733   29  1251
64734   29  1952
64735   29  13653

我在找这个

zipcode state third_highest_population
11941  36     1822
4733   29     1251

我想不出找到每个州第三大人口的方法。非常感谢你的帮助

提问于
用户回答回答于

就像是:

select * from (
    select  your_table.*,  rank() over(partition by state order by totpop) rnk from your_table
) t
where 
rnk = 3
用户回答回答于

您可以使用窗口函数来帮助按州分类邮政编码,然后保持每个州的第三个排名。

SELECT *
FROM (
   SELECT zipcode, 
      state, 
      total_population, 
      DENSE_RANK() OVER (PARTITION BY state ORDER BY total_population DESC) as ziprank
   FROM yourtable
) r
WHERE ziprank = 3

RANK(),根据您的数据DENSE_RANK()ROW_NUMBER()可能都在这里工作。DENSE_RANK()保证您将获得至少1(但可能更多)排名为3.您可能获得更多的原因是,如果两个邮政编码在该州共享相同的人口。这是非常不可能的,所以DENSE_RANK()非常适合。

扫码关注云+社区

领取腾讯云代金券