我试图在sql中分别对每列的where子句进行计数。
让我说我的数据看起来像
person feature1 feature2
a 1 1
a 0 1
a 1 1
a 1 1
a 0 0
a 1 1
b 0 1
c 1 0
现在,我想按人分组数据,分组数据应该看起来像
person feature1 feature2
a 2 1
b 0 1
c 1 0
我想计算每人每列的零数。我怎么能通过sql做到这一点。
答案 0 :(得分:3)
您可以使用条件聚合来执行此操作。 sum
中的条件返回1或0,具体取决于true或false。
select person,sum(feature1=0),sum(feature2=0)
from tbl
group by person
在Hive中,你应该在总结之前将返回的布尔值转换为int
。
select person,sum(cast(feature1=0 as int)),sum(cast(feature2=0 as int))
from tbl
group by person
答案 1 :(得分:0)
在这里,您可以使用案例陈述来计算每个人的非零特征
选择人, count(feature1> 0然后1 else null结束的情况)F1, count(feature1> 0然后1 else null结束的情况)F2 来自表1 逐个人分组;