【发布时间】:2018-02-02 22:29:27
【问题描述】:
我有一个名为 book_author 的表,其架构 (book_id: int, author: string)。
我正在尝试获取作者数量第二多的书籍。
也就是说,如果表格是这样的:
book_id | author
_____________________
1 | John
2 | Anna
3 | Dan
1 | Robert
2 | Kim
1 | Oscar
3 | Bill
回报将是这样的。 Book_id = 1 不在表中,因为它有最大值。
book_id | NUM_AUTHORS
2 | 2
3 | 2
我最初的尝试如下,但这只是返回具有最大作者数的图书 ID,而不是第二大...我可以修改它吗?
SELECT book_id, COUNT(*) AS NUM_AUTHORS FROM book_author GROUP BY book_id
HAVING COUNT(*) =
(SELECT MAX(c) FROM
(SELECT COUNT(book_id) AS c
FROM book_author
GROUP BY book_id));
【问题讨论】:
-
您只想要第二高的吗?第三或第四高呢?
-
@clinomaniac 只有第二个!
-
如果有平局怎么办?
-
@GordonLinoff 如果多行排在第二位,都应该显示
-
@user7090180 - 如果第一名有平局?计数第二高的书将与计数最高的书具有相同的计数...