如何从group by中选择count(*)值0

Sai*_*tha 3 sql oracle

如果没有符合条件的行,我试图获取计数值0.

我有一张大桌子.但是,我发布了一个截断表,因为它解释了我想要的东西.

表格1:

**name   year   title**
name1    2008   title1
name2    2009   title2
name3    2010   title1
name1    2008   title2
name4    2009   title1
name2    2008   title2
Run Code Online (Sandbox Code Playgroud)

我想显示year = 2008的每个名字的行数.那么,如果没有与2008年相关的行那么.应显示名称及其计数0.

输出应该是:

**name   count**
  name1   2
  name2   1
  name3   0
  name4   0
Run Code Online (Sandbox Code Playgroud)

解决方法:

select p.name,(select count(*) 
               from table1 b 
               where b.name=p.name) as count 
from table1 p 
where p.year=2008; 
Run Code Online (Sandbox Code Playgroud)

尝试了一些.但是,它们都没有奏效.

Gio*_*sos 7

试试这个:

select p.name,
       count(case when p.year=2008 then 1 end) as count 
from table1 p 
group by p.name
Run Code Online (Sandbox Code Playgroud)

该查询使用条件聚合,以便有条件地计算值的year=2008出现次数p.name.