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

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

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

7gyucuyw

7gyucuyw1#

你可以试着用 select from values 语法

SELECT
  input_table.attribute,
  bins.bin,
  COUNT(input_table.bin) bin_count 
FROM
  (VALUES (96),
          (97),
          (98))bins (bin)
left JOIN input_table
        ON bins.bin = input_table.bin 
group by bins.bin,input_table.attribute
mzillmmw

mzillmmw2#

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

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

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

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

相关问题