Spark SQL用于从两个不同的查询中分割计数

时间:2017-11-02 06:15:28

标签: sql apache-spark cloudera-quickstart-vm

我正在使用Scala处理Spark SQL。我有一个要求,我需要从两个查询中划分计数。

查询1 - select count(1) from table_1 where flag = 'Y'

查询2 - select count(1) from table_2 where flag = 'N'

现在,我需要从查询1和查询2中划分计数。

val divideValue = sqlContext.sql("
SELECT count(*) FROM table_1 where y != 'yes'/SELECT count(*) FROM table_2 where y = 'yes'
")

以上不起作用。请用实际查询建议

2 个答案:

答案 0 :(得分:1)

检查这个。

使用唯一列计数查询。像.ID和使用自我加入我们可以得到这个

select count(distinct  t1.id) Y_count,  count(distinct  t2.id) N_Count, 
count(distinct  t1.id)/count(distinct  t2.id) divideCount
from #table t1, #table t2  
where t1.flag='Y' and t2.flag='N'

答案 1 :(得分:0)

你可以试试这个:

val count1 = sqlContext.sql("SELECT count(*) FROM table_1 where y != 'yes')
val count2 = sqlContext.sql("SELECT count(*) FROM table_2 where y = 'yes'")
val value1 = count1.head().getLong(0)
val value2 = count2.head().getLong(0)
val finalValue = value1/value2