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

如何在HIVE中为存在航空出行记录的用户生成Flyer标识

HIVE生成Flyer标识列的解决方案

针对你的需求,这里提供两种实用的HIVE SQL写法,不用在CASE WHEN里嵌套子查询,也不用写大量IN子句:

方法一:使用窗口函数(推荐,更高效)

利用MAX()窗口函数按用户分组,直接判断每组是否存在air mode=1的记录:

SELECT 
    Names,
    `air mode`,
    CASE 
        WHEN MAX(`air mode`) OVER (PARTITION BY Names) = 1 THEN 1 
        ELSE 0 
    END AS Flyer
FROM your_table_name;

逻辑:按Names分组后,取每组air mode的最大值。如果最大值是1,说明该用户至少有一条air mode=1的记录,标记Flyer=1;否则标记0。

方法二:分组子查询关联

先筛选出所有存在air mode=1的用户,再和原表关联匹配:

SELECT 
    t.Names,
    t.`air mode`,
    CASE 
        WHEN s.has_air_mode_1 IS NOT NULL THEN 1 
        ELSE 0 
    END AS Flyer
FROM your_table_name t
LEFT JOIN (
    SELECT 
        Names,
        1 AS has_air_mode_1
    FROM your_table_name
    WHERE `air mode` = 1
    GROUP BY Names
) s ON t.Names = s.Names;

逻辑:子查询先找出所有有air mode=1记录的用户并标记,原表左联这个结果,匹配到的用户说明符合条件,标记Flyer=1,否则0。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:34:56