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

AWS Athena SQL查询:按name分组获取多列最频繁出现的值

AWS Athena 按分组获取列的众数解决方案

针对按name分组,提取hobby和food列中出现最频繁值的需求,可以利用Presto SQL(Athena基于Presto)的窗口函数实现,具体SQL如下:

WITH hobby_freq AS (
    SELECT 
        name,
        hobby,
        COUNT(*) AS occurrence,
        ROW_NUMBER() OVER (PARTITION BY name ORDER BY COUNT(*) DESC) AS rank
    FROM your_table_name
    GROUP BY name, hobby
),
food_freq AS (
    SELECT 
        name,
        food,
        COUNT(*) AS occurrence,
        ROW_NUMBER() OVER (PARTITION BY name ORDER BY COUNT(*) DESC) AS rank
    FROM your_table_name
    GROUP BY name, food
)
SELECT 
    h.name,
    h.hobby,
    f.food
FROM hobby_freq h
INNER JOIN food_freq f 
    ON h.name = f.name
WHERE h.rank = 1 AND f.rank = 1;

代码说明:

  • 两个CTE(hobby_freq、food_freq)分别统计每个name下hobby和food的出现次数,并用ROW_NUMBER()函数按频次降序为每个分组内的条目排名,排名第一的即为该列的众数。
  • 若存在多个值出现频次相同的情况(并列众数),ROW_NUMBER()会随机选取一个;若需保留所有并列结果,可将ROW_NUMBER()替换为RANK()。
  • 最后通过name关联两个CTE,筛选出排名第一的记录,得到目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 23:18:30