SQL - 在两列

时间:2017-09-17 15:44:26

标签: mysql sql hiveql

我试图在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做到这一点。

2 个答案:

答案 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     逐个人分组;