HIVE计数列中的值数和总计

时间:2018-11-29 14:32:45

标签: sql hive

我有1个表,其中有3列:

|---------------------|------------------|------------------|
|        ID           |      IDGROUP     |     Parent       |
|---------------------|------------------|------------------|
|          1          |         4        |        Y         |
|---------------------|------------------|------------------|
|          2          |         4        |        N         |
|---------------------|------------------|------------------|
|          3          |         5        |        N         |
|---------------------|------------------|------------------|
|          4          |         4        |        N         |
|---------------------|------------------|------------------|
|          5          |         6        |        Y         |
|---------------------|------------------|------------------|

我想添加一个新列,并像这样计算每个组中非父母(N)的数量:

|-----------------|------------------|------------------|----------|
|        ID       |      IDGROUP     |     Parent       |   Count  |
|-----------------|------------------|------------------|----------|
|        1        |         4        |        Y         |     2    |
|-----------------|------------------|------------------|--------- |
|        2        |         4        |        N         |     2    |
|-----------------|------------------|------------------|----------|
|        3        |         5        |        Y         |     0    |
|-----------------|------------------|------------------|----------|
|        5        |         6        |        Y         |     0    |
|-----------------|------------------|------------------|----------|

我需要计算“ Y”组下“ N”的数量

2 个答案:

答案 0 :(得分:0)

使用窗口功能:

select t.*,
       sum(case when parent <> 'Y' then 1 else 0 end) over (partition by idgroup) as num_nonparents
from t;

答案 1 :(得分:-2)

SELECT id, idgroup, parent, COUNT(id) as count 
FROM table 
GROUP BY idgroup, parent