我需要按ID获取空组的计数,但不包括月份和分组中的销售额
样本数据
id custname reportdate sales
1 xx 31-JAN-17 1256
1 xx 31-MAR-17 <null>
1 xx 30-JUN-17 5678
1 xx 31-DEC-17 <null>
1 xx 31-JAN-18 1222
1 xx 31-MAR-18 <null>
1 xx 30-JUN-18 5667
1 xx 31-DEC-18 7890
2 yy 31-JAN-17 1223
2 yy 31-APR-17 3435
2 yy 30-JUN-17 <null>
2 yy 31-DEC-17 4567
2 yy 31-JAN-18 5678
2 yy 31-APR-18 <null>
2 yy 30-JUN-18 <null>
2 yy 31-DEC-18 2345
我需要什么作为输出
id custname reportdate sales count(Sales nulls)
1 xx 31-JAN-17 1256 2
1 xx 31-MAR-17 <null> 2
1 xx 30-JUN-17 5678 2
1 xx 31-DEC-17 <null> 2
1 xx 31-JAN-18 1222 1
1 xx 31-MAR-18 <null> 1
1 xx 30-JUN-18 5667 1
1 xx 31-DEC-18 7890 1
2 yy 31-JAN-17 1223 1
2 yy 31-APR-17 3435 1
2 yy 30-JUN-17 <null> 1
2 yy 31-DEC-17 9643 1
2 yy 31-JAN-18 5678 2
2 yy 31-APR-18 <null> 2
2 yy 30-JUN-18 <null> 2
2 yy 31-DEC-18 2345 2
您可以看到我有很多年,并且我需要在id和year NOT MONTH上进行分区
答案 0 :(得分:2)
在case
窗口函数中使用count
表达式。
select t.*,count(case when sales is null then 1 end) over(partition by id) as null_cnt_per_id
from tbl t