Hive SQL按结果包含0个值

时间:2015-08-26 00:09:31

标签: sql group-by hive

我在Hive中有下表:

SELECT day, type, count(distinct account) as account_count from my_table

day  type  account_count
1    X     1
1    Y     1
1    Z     1
2    Y     1
2    Z     1
3    Z     1

如果我执行以下SQL,我可以生成此表:

zero

但是,我想生成计数也为day type account_count 1 X 1 1 Y 1 1 Z 1 2 X 0 2 Y 1 2 Z 1 3 X 0 3 Y 0 3 Z 1 的行,这样表格具有以下结构:

nanosleep()

是否可以生成此表结构?

1 个答案:

答案 0 :(得分:3)

是。使用(string, start, length)生成行,然后使用cross join填充最后一列中的值:

left join

如果计数总是0或1(即没有重复),则效率更高:

select d.day, t.type, count(distinct mt.type)
from (select distinct day from my_table) d cross join
     (select distinct type from my_table) t left join
     my_table my
     on mt.day = d.day and mt.type = d.type
group by d.date, t.type;