我正在使用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'
")
以上不起作用。请用实际查询建议
答案 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