在VerticaSQL中,如何通过多列及其类别来获取主键的计数?

lskq00tm  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(272)

我有下表(3列10行)

ID cat_1 cat_2
1001    High    High
1002    Mid High
1003    Mid High
1004    <null>  <null>
1005    <null>  Low
1006    High    High
1007    <null>  <null>
1008    High    Mid
1009    Low Low
1010    High    High

我想计算每个列的id计数。我不想运行多个查询。有没有一个简单的方法来实现这一点?

Category    cat_1   cat_2
High    4   5
Mid 2   1
Low 1   2
<null>  3   2

目前,我只知道运行group by语句的多个查询(“select cat_1,count(id)from table group by 1”)。我知道这种方法不正确。谢谢!

c90pui9n

c90pui9n1#

可以取消拆分和聚合。这里有一个通用方法:

select cat, sum(cat_1), sum(cat_2)
from ((select cat_1 as cat, 1 as cat_1, 0 as cat_2
       from t
      ) union all
      (select cat_2, 0 as cat_1, 1 as cat_2
       from t
      )
     ) c
group by cat;

这是一把小提琴。

相关问题