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

AWS Athena中如何获取每个唯一条目Top N行且不返回rn列?

解决AWS Athena中分组取Top N的简洁写法

针对你的需求,这里提供两种简洁的写法,避免子查询返回冗余的rn列:

1. 用QUALIFY子句(最简洁)

Athena支持QUALIFY语法,可以直接在主查询中过滤窗口函数的结果,无需嵌套子查询或CTE:

SELECT col1, query, score
FROM your_table_name
QUALIFY ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY score DESC) <= 2
ORDER BY col1, score DESC;

这种写法直接筛选出每个col1分组内按score降序排名前2的行,同时只返回你需要的三列,完全不会出现rn列。

2. 用CTE(结构更清晰)

如果需要更清晰的逻辑拆分,可以用公共表表达式(CTE)把排名逻辑单独抽离:

WITH ranked_data AS (
    SELECT 
        col1, 
        query, 
        score,
        ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY score DESC) AS rn
    FROM your_table_name
)
SELECT col1, query, score
FROM ranked_data
WHERE rn <= 2
ORDER BY col1, score DESC;

CTE让排名逻辑和最终筛选分离,可读性更强,后续如果要扩展逻辑也更方便,同样不会返回rn列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:20:55