有一表t,字段为 name,value;数据有:
a     5
b     2
a     5
c     3
a     5
c     5
需求是用sql按name分组,查询出value=5的name的数目
结果是:
a     3
b     0
c     1
我想用分析函数查,写个sql 不能用
select t.name,count(t.name)over(partiton by t.name order by t.name)sm from t
我想order by 后面要有一个where或者having,能把value=5的筛选出来就好了

解决方案 »

  1.   

    select 
    t.name,
    count(t.name)
    from t 
    where value = 5
    group by name
      

  2.   

    如果是在程序中,可以分步查询,先查处所有的name,然后循环查询得出结果
    或者用存储过程来解决,利用游标,这个和分步查询的实现方法是差不多的。。要想一次性得出结果,还没想出来,汗。。思考中,SQL基本功啊,唉
      

  3.   

    由于楼主前提就是value=5这样b就直接被过滤掉了,这样是不能输出b的结果的。相比一楼中另外一种方法是:
    select  name,count(name)
            from t 
           group by name,value having value=5 ;