汇总函数和GROUP BY

1 sql

我有以下查询作为SQL的作业:-

编写一个查询,告知每个作者写了多少本书。在每行上首先提供作者ID,然后提供书籍数量。对列表进行排序,以使书籍写作最多的作者在顶部,而底部则是书籍最少的作者。作者的数量相同,其作者ID的作者顺序进一步由高至低。

我已经通过替换groupby,orderby和count()函数尝试了不同的选项。

SELECT authorid as "authorid",
        COUNT (bookid) as "count"
FROM book
GROUP by authorid
HAVING COUNT (bookid) >=1
ORDER BY   COUNT (bookid) DESC;
Run Code Online (Sandbox Code Playgroud)

您的结果

authorid    count
204 4
202 3
206 1
201 1
207 1
205 1
Run Code Online (Sandbox Code Playgroud)

预期结果

authorid    count
204 4
202 3
201 1
205 1
206 1
207 1
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

您缺少这种情况:

作者的数量相同,其作者ID的作者顺序进一步由高至低。

这需要第二个ORDER BY键:

ORDER BY COUNT(bookid) DESC, authorid;
Run Code Online (Sandbox Code Playgroud)

  • @Victor。。。祝您学习顺利。 (2认同)