PostgreSQL-计算行数

PostgreSQL-计算行数,sql,postgresql,Sql,Postgresql,下面列出了一些书籍的作者: Table name bookid --------------- Alan 1 Bob 1 Charlie 2 David 2 我想知道一个人在他的整本书中有多少共同作者。e、 例如,如果艾伦写了两本书,一本是鲍勃写的,另一本是查理+大卫写的,那么他的合著者总数应该是3 我试过但不起作用: select t1.name, count(t2.name) from table t1, table t2 wh

下面列出了一些书籍的作者:

Table

name     bookid
---------------
Alan        1
Bob         1
Charlie     2
David       2
我想知道一个人在他的整本书中有多少共同作者。e、 例如,如果艾伦写了两本书,一本是鲍勃写的,另一本是查理+大卫写的,那么他的合著者总数应该是3

我试过但不起作用:

select t1.name, count(t2.name)
from table t1, table t2 
where t1.bookid = t2.bookid 
有人帮忙吗?非常感谢

SELECT name, count(*) as cnt
FROM table
GROUP BY name;

从表t1、表t2中选择t1.name、countt2.name,其中t1.bookid=t2.bookid作业分配?这是。在本例中,它将始终返回1作为计数。对于您的表,这将返回1作为计数,因为两本书的作者不同。但如果您添加名为Alan且bookid=3的新行,Alan将有2个作为计数列。Alan和bob是同一本书的两位作者。查理和大卫也是。你们说得对,我没能正确理解问题:也许是countname?同一作者可能会出现很多次。而且最好是左连接。作者不得有任何共同作者。
select t1.name, count(t2.name)
from table1 t1, table1 t2 
where t1.bookid = t2.bookid 
and t1.name != t2.name
group by t1.name