0

我有一个包含以下列的表: areaCode zipcode city state population

有多行具有与不同城市/邮政编码相关联的相同区号。我需要选择与区号相对应的人口最多的城市。

前任:

area_codes / 邮编 / 城市 / 州 / 人口

858 94111   San Francisco   CA  3905
858 94121   San Francisco   CA  34786
914 10010   New York    NY  22785
914 10012   New York    NY  17738  

我希望能够只选择人口为 34786 的城市旧金山(区号为 858)和人口为 22785 的纽约行(区号为 914),因为它们的人口最多. 选择这些后,我需要创建一个新表并将它们放在一个新表中。

4

3 回答 3

1

一般解决方案使用ROW_NUMBER

WITH cte AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY area_codes ORDER BY population DESC) rn
    FROM yourTable
)

SELECT area_codes, zip, city, state, population
FROM cte
WHERE rn = 1;
于 2020-02-21T05:55:01.230 回答
1

尝试这个:

Create table MaxPopulation as (select area_codes,city,max(population) from table group by area_codes,city);
于 2020-02-21T05:56:16.697 回答
1
INSERT INTO cte_new
SELECT 
   area_codes,
   zip,
   city,
   state,
   MAX(population) population
FROM cte
GROUP BY
   area_codes,
   zip,
   city,
   state

一般来说,我更喜欢分组函数而不是窗口函数(分区),因为它提供了更好的性能。我已跳过此代码之前您需要的表声明

于 2020-02-21T07:58:32.093 回答