如何通过 Vertica SQL 中的多列及其类别获取主键的计数?

How to get count of Primary key by multiple columns and their categories in Vertica SQL?

我有 table 如下所示。 (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 statements ("select cat_1, count(ID) from table 的多个查询按 1") 分组。我知道这种方法是不正确的。谢谢!

您可以逆透视和聚合。这是一个通用的方法:

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;

Here 是一个 db<>fiddle.