SQL聚合计数语句

SQL聚合计数语句,sql,Sql,我在最后一个“高级选择语句”问题上,似乎不能得到正确的答案 表1:bookworm数据库的模式。主键带下划线。有一些外键引用将表链接在一起;您可以将其与自然连接一起使用 Author(aid, alastname, afirstname, acountry, aborn, adied). Book(bid, btitle, pid, bdate, bpages, bprice). City(cid, cname, cstate, ccountry). Publisher(pid, pname).

我在最后一个“高级选择语句”问题上,似乎不能得到正确的答案

表1:bookworm数据库的模式。主键带下划线。有一些外键引用将表链接在一起;您可以将其与自然连接一起使用

Author(aid, alastname, afirstname, acountry, aborn, adied).
Book(bid, btitle, pid, bdate, bpages, bprice).
City(cid, cname, cstate, ccountry).
Publisher(pid, pname).
Author_Book(aid, bid).
Publisher_City(pid, cid).
问题是。。。“查找写过三本或三本以上书的作者姓名。”

代码可以工作,但我想要完整的作者姓名,而不是作者id

select count(aid) as authorBook, aid as authorName
from Author_book natural join Author
group by aid
having count(aid) > 3;
最后一张表显示为

 authorbook | authorname 
------------+------------
      8 | dick
      4 | thar
(2 rows)

您需要
拥有COUNT(aid)>3
您不能使用别名authorBook

如果您需要表中的作者姓名和姓名,您可以这样做:

选择AuthorName,COUNT(*)作为书籍的计数
按计数(*)大于3的AuthorName从AuthorBooks组

如果作者的姓名是外键,请执行以下操作:

SELECT x.AuthorName, COUNT(x2.*) FROM
AuthorBooks x2 INNER JOIN Authors x1 ON x1.AuthorID = x2.AuthorID
GROUP BY x.AuthorName HAVING COUNT(x2.*) > 3

查询中需要author表和book表。加入或子选择!我也在尝试关联作者姓名。@ZekeP,这就是为什么在查询中需要authors表的原因。尝试加入,或子选择!你把我引向了正确的方向,但是我没有使用“AuthorName”,而是使用了“aid”,因为AuthorName不存在。我想把作者的全名包括进来,而不仅仅是作者。我尝试在“count(aid)as authorBook”之前添加“afistname,alastname natural join Author”,但出现了一个错误…Zeke使用您的列名,我的列名只是一个示例,您需要更改它以匹配列名/表名/业务规则等。我想我需要Author和Author_book表,但无法使用自然联接完成它。。。
SELECT  A.alastname,
        A.afirstname,
        COUNT(*) as Books
FROM Author_Book AB
INNER JOIN Author A
    ON AB.aid = A.aid
GROUP BY aid
HAVING COUNT(*) > 3