使用GROUPBY获取类别计数,但由于数据不可用,输出表中缺少一个类别

ff29svar  于 2021-06-27  发布在  Hive
关注(0)|答案(2)|浏览(291)

配置单元脚本问题:当计数为零时,使用配置单元获取groupby的计数有问题。如果输入表中有可用的类别,我就可以看到输出表中的计数。但当一个特定的类别在输入表中不可用时,它在输出表中不会显示为零。相反,这个类别从输出表中消失了。非常感谢您的帮助。提前谢谢。
输入和输出tables:enter image 此处为说明
输入表按“年”列进行分区。
Hive代码itried:enter image 此处为说明

7gyucuyw

7gyucuyw1#

你可以试着用 select from values 语法

  1. SELECT
  2. input_table.attribute,
  3. bins.bin,
  4. COUNT(input_table.bin) bin_count
  5. FROM
  6. (VALUES (96),
  7. (97),
  8. (98))bins (bin)
  9. left JOIN input_table
  10. ON bins.bin = input_table.bin
  11. group by bins.bin,input_table.attribute
mzillmmw

mzillmmw2#

我认为你把逻辑搞得太复杂了。为了得到你期望的结果,你可以 UNION ALL 三个简单的查询如下:

  1. SELECT 'ada' attribute, 96 bin, COUNT(*) FROM input_table WHERE bin = 96
  2. UNION ALL SELECT 'ada' attribute, 97 bin, COUNT(*) FROM input_table WHERE bin = 97
  3. UNION ALL SELECT 'ada' attribute, 98 bin, COUNT(*) FROM input_table WHERE bin = 98

这些类型的查询 GROUP BY 将始终返回某些内容,即使没有与 WHERE 条件。
db小提琴演示:

  1. attribute | bin | (No column name)
  2. :-------- | --: | ---------------:
  3. ada | 96 | 3
  4. ada | 97 | 0
  5. ada | 98 | 5

相关问题