如何基于给定表结构统计各图书馆分馆的图书借出总量?
统计图书馆分馆图书借出总量解决方案
要实现每个分馆的名称及借出总量统计,需要结合分组聚合和左连接完成,确保所有分馆(包括无借出记录的)都能被展示。
最终SQL语句
SELECT lb.branchName, COUNT(bl.bookID) AS loan_total FROM library_branch lb LEFT JOIN book_loan bl ON lb.branchID = bl.branchID GROUP BY lb.branchID, lb.branchName ORDER BY lb.branchName;
关键说明
- LEFT JOIN:关联分馆表和借出记录表,保证即使分馆没有任何借出记录,也会出现在结果中,此时借出总量为0。
- GROUP BY:按照分馆的唯一ID
branchID和名称branchName分组,确保每个分馆的统计结果唯一。 - COUNT(bl.bookID):统计该分馆的有效借出记录数,因为
bookID是book_loan表的主键,不会为空值,能准确过滤掉无借出记录的NULL值,返回正确的统计数。如果使用COUNT(*),会把左连接产生的NULL行也算作1,导致统计错误。
内容的提问来源于stack exchange,提问作者Balay Bagchi
相关产品推荐
相关产品推荐

