考虑一下,我在选择查询中有以下内容:
ID Flag
5 Y
5 Y
5 N
6 Y
6 Y
6 Y
6 N
我应该在同一个选项中添加一个新列计数,它会计算的数字' Y' ID的记录并将其分配给所有人。 (例如:ID = 5有3条记录。所有这些记录都应被分配计数值为' 2')。
选择查询中所需的输出:
ID Flag count
5 Y 2
5 Y 2
5 N 2
6 Y 3
6 Y 3
6 Y 3
6 N 3
答案 0 :(得分:3)
使用窗口功能:
select id,
flag,
count(case when flag = 'Y' then 1 end) over (partition by id) as "count"
from the_table
order by id;
对于case
的标志,N
表达式将返回null,因此count()函数将忽略它们