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

使用Hive查询每年QUANTITYORDERED最高的月份

Hive查询:找出每年销量最高的月份

要解决这个问题,你可以通过分组计算月销量总和结合窗口函数排名的方式筛选出每年销量最高的月份,以下是两种常用实现方案:

方案1:仅返回每个年份的一个最高销量月份(无并列时适用)

如果不需要处理同一年份多个月份销量并列最高的情况,使用ROW_NUMBER()窗口函数:

WITH monthly_sales AS (
    -- 按年、月分组,计算每个月的总销量
    SELECT 
        YEAR_ID,
        MONTH_ID,
        SUM(QUANTITYORDERED) AS total_quantity
    FROM your_table_name  -- 替换为你的实际表名
    GROUP BY YEAR_ID, MONTH_ID
),
ranked_sales AS (
    -- 按年份分区,对月销量总和降序排名
    SELECT 
        YEAR_ID,
        MONTH_ID,
        total_quantity,
        ROW_NUMBER() OVER (PARTITION BY YEAR_ID ORDER BY total_quantity DESC) AS rank_num
    FROM monthly_sales
)
-- 筛选每个年份排名第一的月份
SELECT YEAR_ID, MONTH_ID, total_quantity
FROM ranked_sales
WHERE rank_num = 1;

方案2:返回同一年份所有并列最高的月份

如果存在某一年多个月份销量总和相同且均为最高的情况,使用RANK()窗口函数可保留所有并列记录:

WITH monthly_sales AS (
    SELECT 
        YEAR_ID,
        MONTH_ID,
        SUM(QUANTITYORDERED) AS total_quantity
    FROM your_table_name  -- 替换为你的实际表名
    GROUP BY YEAR_ID, MONTH_ID
),
ranked_sales AS (
    SELECT 
        YEAR_ID,
        MONTH_ID,
        total_quantity,
        RANK() OVER (PARTITION BY YEAR_ID ORDER BY total_quantity DESC) AS rank_num
    FROM monthly_sales
)
SELECT YEAR_ID, MONTH_ID, total_quantity
FROM ranked_sales
WHERE rank_num = 1;

逻辑说明

  • monthly_sales 公共表表达式(CTE)负责聚合每个年份-月份的总销量;
  • ranked_sales 中通过PARTITION BY YEAR_ID将数据按年份拆分,ORDER BY total_quantity DESC确保销量最高的月份排名第一;
  • 最后通过WHERE rank_num = 1筛选出目标记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:35:12