目前尚不清楚是否应该选择与人合写两本书并在另一本书中排名第二和第三的人。允许它更简单;如果您需要更严格的条件,您可以细化查询。
回答此查询的一种方法是关键观察到,您对他们所写的书籍数量等于他们列为第二或第三作者的书籍数量感兴趣的作者。
尝试一些 TDQD — 测试驱动的查询设计
每个作者写的书数
SELECT Aname, COUNT(*) AS BookCount
FROM Author
GROUP BY AName
每位作者作为第二或第三作者撰写的书籍数量
SELECT Aname, COUNT(*) AS NonLeadAuthorCount
FROM Author
WHERE Position IN (2, 3)
GROUP BY Aname
加入计数相同的两个
SELECT X.Aname
FROM (SELECT Aname, COUNT(*) AS BookCount
FROM Author
GROUP BY AName
) AS X
JOIN (SELECT Aname, COUNT(*) AS NonLeadAuthorCount
FROM Author
WHERE Position IN (2, 3)
GROUP BY Aname
) AS Y
ON X.BookCount = Y.NonLeadAuthorCount
另一种查看方式是“在位置 2 或 3 中写过书的作者集合减去在位置不是 2 或 3 中写过书的作者集合”。为此,请参阅jpw的答案。