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)
您缺少这种情况:
作者的数量相同,其作者ID的作者顺序进一步由高至低。
这需要第二个ORDER BY键:
ORDER BY COUNT(bookid) DESC, authorid;
Run Code Online (Sandbox Code Playgroud)