在Vertica DB中封装分组或条件聚合

时间:2016-11-15 13:01:19

标签: sql group-by vertica

我在Vertica DB中有以下表格:

+---------+-------+
| Readout | Event |
+---------+-------+
|       1 | A     |
|       1 | B     |
|       1 | A     |
|       2 | B     |
|       2 | A     |
+---------+-------+

我想将每个读数分组并计算事件的频率,得到如下表格:

+---------+----------------+----------------+-----------------+
| Readout | Count(Readout) | Count(Event A) | Count (Event B) |
+---------+----------------+----------------+-----------------+
|       1 |              3 |              2 |               1 |
|       2 |              2 |              1 |               1 |
+---------+----------------+----------------+-----------------+

我确信有一个简单的GROUP BY命令,但我无法绕过它。

1 个答案:

答案 0 :(得分:4)

您想要条件聚合:

select readout, count(*),
       sum(case when event = 'A' then 1 else 0 end) as num_a,
       sum(case when event = 'B' then 1 else 0 end) as num_b
from t
group by readout;
相关问题