2016-08-02 80 views
0

我有一个查询,看起来像这样:“INSERT INTO”输出表?

select hour, count(*) 
from table 
group by hour 

我想回报的样子:

hour count 
8  1 
9  0 
10 3 

但是,相反它看起来像:

hour count 
8  1 
10 3 

这是因为在table中没有9的条目。我能想到的唯一解决方案是使用围绕查询的insert into语句。因此,如下所示:

insert into (
select hour, count(*) 
from table 
group by hour) 
values (9, 0) 

但是,这不是Spark SQL中正确的语法。

是否可以插入到作为查询结果而生成的表中而不将该表保存到数据库中?有没有其他方法可以完成我想要完成的任务?

+0

工会怎么样。选择小时,从小组计数(*)按小时工会选择9,0 – Kostya

+0

返回'org.apache.spark.sql.AnalysisException:在'select'附近的'union'处丢失EOF; line 28 pos 0' –

+0

http://stackoverflow.com/a/1271845/5308100看到这个答案。应该做我相信的诡计。 – Mark

回答

0

像这样的东西应该有任何数据库引擎的工作:

select hour, sum(records) totalRecords 
from (
select 0 hour, 0 records 
from table 
union 
select 1 hour, 0 records 
from table 
... 
union 
select 23 hour, 0 records 
from table 
union 
select hour, count(*) records 
from table 
group by hour 
) derivedTable 

这是假设,当然,这一个小时表示一天中的小时。