select nd.id
count(1)
from tba nd
group by nd.id;
count(1)
from tba nd
group by nd.id;
用这种方式查询,得到的结果只显示非0统计。
若想将统计结果为0的数据也显示,可在外再套一层查询,并转换结果:
select tba1.id,nvl(tmptb.cnt,0)
from tba as tba1
left join(select nd.id
count(1) cnt
from tba nd
group by nd.id) tmptb
count(1) cnt
from tba nd
group by nd.id) tmptb
on tmptb.id = tba1.id
这样是基于表里现有的数据,并且数据量大的话,效率很低下。
如果是由于业务要求,有些数据表里没有,可以新建一个配置表,将几种类型的业务数据配置进去。