基于HIVE SQL实现按Item聚合计算及条件标记需求
Hive SQL 实现需求
针对需求,以下是对应的Hive SQL代码,包含所有要求的输出列:
SELECT Item, Cost, -- 计算Cost的25%取值 Cost * 0.25 AS `25% cost`, price, -- 按Item聚合的price总和 SUM(price) OVER(PARTITION BY Item) AS total_price, -- 按Item计算的price累计值(此处按price升序累计,可根据实际业务调整排序字段) SUM(price) OVER(PARTITION BY Item ORDER BY price ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_price, -- 标记累计值大于25% cost的记录 CASE WHEN SUM(price) OVER(PARTITION BY Item ORDER BY price ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) > Cost * 0.25 THEN 'Y' ELSE 'N' END AS flag FROM your_table_name; -- 替换为你的实际表名
代码说明:
25% cost:通过Cost * 0.25直接计算,用反引号包裹列名避免特殊字符引发语法错误total_price:利用窗口函数SUM(price) OVER(PARTITION BY Item),实现按Item分组统计price总和cumulative_price:通过带排序规则的窗口函数实现累计求和,ORDER BY price可替换为业务需要的排序字段(如时间字段),ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW指定累计范围为当前分组的第一行到当前行flag:用CASE WHEN逻辑判断累计值与25% cost的大小关系,返回标记(示例用Y/N,可按需调整)
内容的提问来源于stack exchange,提问作者sue
相关产品推荐
相关产品推荐

