书名            作者
---------- ----------
 AA              a
 BB              b
 CC              a、b
 DD              c
 EE              a、c
其中书《CC》为作者a、b共写书目《EE》为作者a、c共写书目
如果用下面SQL语句:select 作者,count(作者) as 著书数 from T group by (作者) having count(*)>=1得到结果:作者           著书数
---------- ----------
a                   1
a、b                1
a、c                1
b                   1
c                   1请问如何写SQL语句可以得到如下结果呢(三位作者分别著书的数量)作者           著书数
---------- ----------
a                   3
b                   2
c                   2

解决方案 »

  1.   

    SQL> select * from t;TITLE                AUTHOR
    -------------------- --------------------
     AA                  a
    BB                   aa
    CC                   a、aa
    DD                   aaa
    EE                   a、aaaSQL> 
    SQL> SELECT t1.author,COUNT(*)
      2  FROM   t t1, t t2
      3  WHERE  instr(t1.author, '、') < 1
      4  AND    instr('、' || t2.author || '、', '、' || t1.author || '、') > 0
      5  GROUP BY t1.author
      6  /AUTHOR                 COUNT(*)
    -------------------- ----------
    a                             3
    aa                            2
    aaa                           2