SQL技术求助:按出版社代码降序展示各出版社图书总数
解决SQL统计出版社图书总数的问题
嘿,我来帮你调整下这段SQL代码!你的思路已经很对了——分组统计+排序,但还有几个小细节可以优化,刚好能精准满足你的需求:
首先,你的现有代码有几个可以完善的点:
- 只返回统计数量却没对应出版社代码,这样结果会很模糊,不知道数字对应哪家出版社;
ORDER BY默认是升序排序,你需要的是从高到低,得加上降序关键字DESC;- 另外,
COUNT(pub_code)会忽略pub_code为NULL的记录,如果你的数据里存在这类情况,统计结果会不准确,用COUNT(*)或者图书主键字段(比如book_id)会更稳妥通用。
修正后的代码如下:
SELECT pub_code, COUNT(*) AS book_count FROM Library_Books GROUP BY pub_code ORDER BY pub_code DESC;
我来拆解下这段代码的作用:
SELECT pub_code:把出版社代码和统计结果一起返回,让每一行数据的对应关系清晰明了;COUNT(*) AS book_count:统计每个出版社下的所有图书数量,并给统计列起一个直观的别名,方便阅读结果;GROUP BY pub_code:按出版社代码分组,这部分你原本就写对了,核心逻辑没问题;ORDER BY pub_code DESC:指定按出版社代码从高到低排序,DESC就是SQL里表示降序的关键字。
如果你的数据里存在 pub_code 为空的记录,且你不想统计这类数据,可以在分组前加个过滤条件:
SELECT pub_code, COUNT(*) AS book_count FROM Library_Books WHERE pub_code IS NOT NULL GROUP BY pub_code ORDER BY pub_code DESC;
这样就能完美实现你的需求啦!
内容的提问来源于stack exchange,提问作者Kyle Benjamin
相关产品推荐
相关产品推荐

