使用Redshift计算特定ID的字段值的出现次数

时间:2016-01-08 18:11:11

标签: amazon-redshift

我想计算ID的某个字段中特定值的出现次数。所以我拥有的是:

| Location ID |   Group  |
|:----------- |:---------|
| 1           |  Group A |      
| 2           |  Group B |      
| 3           |  Group C |   
| 4           |  Group A |  
| 4           |  Group B | 
| 4           |  Group C | 
| 3           |  Group A | 
| 2           |  Group B | 
| 1           |  Group C |    
| 2           |  Group A | 

我希望通过一些计算机魔术产生的是:

| Location ID | Group A Count | Group B Count | Group C count|
|:----------- |:--------------|:--------------|:-------------|
| 1           | 1             | 0             | 1            |
| 2           | 1             | 2             | 0            |
| 3           | 1             | 0             | 1            |
| 4           | 1             | 1             | 1            |

我是否可以在Redshift中使用某种旋转功能来实现这一目标?

1 个答案:

答案 0 :(得分:4)

这将需要使用CASE函数和GROUP子句,例如。

SELECT l_id,
       SUM(CASE WHEN l_group = 'Group A' THEN 1 ELSE 0 END) AS a,
       SUM(CASE WHEN l_group = 'Group B' THEN 1 ELSE 0 END) AS b-- and so on
       FROM location
GROUP BY l_id;

这应该给你这样的结果:

| l_id | a | b |
|------|---|---|
|    4 | 1 | 1 |
|    1 | 1 | 0 |
|    3 | 1 | 0 |
|    2 | 1 | 2 |

您可以在此SQL Fiddle上播放。