我在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()
是否可以生成此表结构?
答案 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;