SQL聚合计数语句
我在最后一个“高级选择语句”问题上,似乎不能得到正确的答案 表1:bookworm数据库的模式。主键带下划线。有一些外键引用将表链接在一起;您可以将其与自然连接一起使用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).
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