根据日期,使用配置单元sql从同一列中排除值

14ifxucb  于 2021-06-28  发布在  Hive
关注(0)|答案(1)|浏览(307)

我需要使用hive从表中提取一组id。我要从中提取数据的表是按日期划分的。我需要的是8天前出现在表中但不在代表过去7天的日期表中的不同ID。我尝试过使用子查询:

SELECT DISTINCT id
FROM my_table
WHERE date = '2016-07-14'
  AND id NOT IN (
    SELECT DISTINCT id
    FROM my_table
    WHERE date BETWEEN '2016-07-15' AND '2016-07-21'
  );

但是,我在查询中收到一条错误消息,其中包含不受支持的语言功能(整个错误消息太长,无法在此处发布)。既然我不能在hivesql中使用这种方法,那么我在这里有什么选择呢?

camsedfj

camsedfj1#

使用left join可以实现相同的功能:

SELECT a.ID 
FROM
        (
        SELECT DISTINCT ID
        FROM my_table
        WHERE date = '2016-07-14'
        )a 
          LEFT JOIN (
                     SELECT DISTINCT ID
                     FROM my_table
                     WHERE date BETWEEN '2016-07-15' AND '2016-07-21'
                   ) s on a.ID=s.ID
WHERE s.ID IS NULL;

相关问题