SQL> select * From aa;        ID NAME
---------- --------------------
        10 猪八戒
        65 猪八戒
        70 猪八戒SQL> select name,count(id) from aa where id>60 group by name
  2  ;NAME                  COUNT(ID)
-------------------- ----------
猪八戒                        2SQL>

解决方案 »

  1.   

    SQL> select name,sum(decode(sign(id-60),-1,0,1)) from aa group by name;NAME                 SUM(DECODE(SIGN(ID-60),-1,0,1))
    -------------------- -------------------------------
    猪八戒                                             2SQL>
      

  2.   

    SQL> select name,sum(score) from(
      2  select name,case when id>60 then 1 else 0 end score from aa)
      3  group by name
      4  /NAME                 SUM(SCORE)
    -------------------- ----------
    猪八戒                        2SQL>
      

  3.   

    虽然已经结帖了,但是还是想问一下高手:
    select distinct name,count(id)over(partition by name) from aa where id>=60 ;
    select name,count(id) from aa where id>=60 group by name;
    这两条语句哪条执行的效率高些?