我们假设我有table1:
id value1 value2 value3
1 z null null
1 z null null
1 null y null
1 null null x
2 null y null
2 z null null
3 null y null
3 null null null
3 z null null
我有table2:
id
1
2
3
我想计算每个id每列中的值数,以得到这样的输出。 (例如,id 1有2 - z' s,1 y和1 x)
id value1 value2 value3
1 2 1 1
2 1 1 0
3 1 1 0
会建议采用什么方法?
我目前正在使用Oracle 12c
答案 0 :(得分:5)
执行GROUP BY
,使用COUNT
(仅计算非空值):
select id,
count(value1) as value1,
count(value2) as value2,
count(value3) as value3
from table1
group by id
修改强>:
如果值不为空但是'。' (或其他),使用case
表达式来进行条件计数,例如:
select id,
count(case when value1 <> '.' then 1 end) as value1,
count(case when value2 <> '.' then 1 end) as value2,
count(case when value3 <> '.' then 1 end) as value3
from table1
group by id