hive 如何获取日期范围的值,即使特定日期在表中没有数据,使用impala-shell

bxpogfeg  于 2023-10-18  发布在  Hive
关注(0)|答案(1)|浏览(183)

我想获取一个日期范围的数据,在这个日期范围内,有些日期在表中没有任何日期。查询结果没有显示这些日期的任何内容,如下所示,从2023-07-14开始的日期没有数据。

查询

select count(*),to_date(date_column) as cdate from table where to_date(date_column) > '2023-07-11' group by 2 order by 2;

  1. +----------+----------------------------+
  2. | count(*) | cdate |
  3. +----------+----------------------------+
  4. | 413 | 2023-07-12 |
  5. | 316 | 2023-07-13 |
  6. | 400 | 2023-08-11 |
  7. | 302 | 2023-08-12 |
  8. | 325 | 2023-08-13 |
  9. | 13 | 2023-08-14 |
  10. | 767 | 2023-08-15 |
  11. +----------+----------------------------+

我想得到的结果在低于预期的格式。

  1. +----------+----------------------------+
  2. | count(*) | cdate |
  3. +----------+----------------------------+
  4. | 413 | 2023-07-12 |
  5. | 316 | 2023-07-13 |
  6. | 0 | 2023-07-14 |
  7. | 0 | 2023-07-15 |
  8. | 0 | 2023-07-16 |
  9. | 0 | 2023-07-17 |
  10. | 0 | 2023-07-18 |
  11. +----------+----------------------------+

如果日期没有数据,则返回0作为计数值。

k0pti3hp

k0pti3hp1#

请使用sum()为该条件-

  1. select
  2. sum(case when to_date(date_column) > '2023-07-11' then 1 else 0 end ) as cnt,
  3. to_date(date_column) as cdate
  4. from table where group by 2
  5. order by 2;

相关问题