我有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”的数量
答案 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