You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL获取每个城市对应最高City_count的Key及相关数据?

问题分析与解决

你的窗口函数写法存在两个核心错误:

  1. 语法错误:DENSE_RANK()是独立的排名函数,不能直接搭配FIRST关键字使用,这不是合法的SQL语法。
  2. 排序逻辑冗余:已经按City分区,同一分区内的City值完全相同,排序时不需要再指定City,只需要按City_count DESC来确定行的优先级即可。

正确实现方式

方法1:使用DENSE_RANK()筛选排名第一的行

这种方式会保留每个城市中所有City_count并列最高的行(如果存在多个),是最通用的写法:

WITH ranked_city_data AS (
    SELECT 
        "Key",
        City,
        City_count,
        -- 按城市分区,区内按City_count降序排名
        DENSE_RANK() OVER (PARTITION BY City ORDER BY City_count DESC) AS city_rank
    FROM your_table_name
)
SELECT "Key", City, City_count
FROM ranked_city_data
WHERE city_rank = 1;

方法2:使用ROW_NUMBER()(适合唯一最高值场景)

如果确定每个城市只有唯一的最高City_count,可以用ROW_NUMBER()替代DENSE_RANK(),它会给每行分配唯一的序号:

WITH numbered_city_data AS (
    SELECT 
        "Key",
        City,
        City_count,
        ROW_NUMBER() OVER (PARTITION BY City ORDER BY City_count DESC) AS row_num
    FROM your_table_name
)
SELECT "Key", City, City_count
FROM numbered_city_data
WHERE row_num = 1;

说明

  • 注意Key是SQL关键字,不同数据库需要用对应符号包裹:MySQL用反引号`Key`,PostgreSQL/ SQL Server用双引号"Key"。
  • 替换your_table_name为你实际使用的表名。

用你的测试数据验证,上述两种方法都能得到期望的输出:

Key City        City_count
13  Columbus    30
16  Grove City  15

内容的提问来源于stack exchange,提问作者user1009073

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 01:19:57