编写SQL查询生成各分类全产品数量报表 包含无匹配行的分类数据
分类产品数量统计SQL实现
涉及数据表
- 产品表(Product)

- 分类表(category)

- 库存表(Inventory)

需求说明
输出各分类下所有产品的数量统计报表,要求包含无匹配产品的分类数据,期望输出效果如下:
实现SQL语句
仅统计分类下产品数量可直接使用如下语句:
SELECT c.category_id 分类ID, c.category_name 分类名称, COUNT(p.product_id) 产品数量 FROM category c LEFT JOIN Product p ON c.category_id = p.category_id GROUP BY c.category_id, c.category_name
如果需要同时统计分类下总库存,可使用关联库存表的版本:
SELECT c.category_id 分类ID, c.category_name 分类名称, COUNT(DISTINCT p.product_id) 产品数量, IFNULL(SUM(i.stock_quantity), 0) 分类总库存 FROM category c LEFT JOIN Product p ON c.category_id = p.category_id LEFT JOIN Inventory i ON p.product_id = i.product_id GROUP BY c.category_id, c.category_name
逻辑说明
以分类表作为左表执行左连接,即使分类下没有匹配的产品,分类记录也不会被过滤,COUNT统计时不会计数NULL值,无产品的分类统计结果自动为0,完全匹配需求。
内容的提问来源于stack exchange,提问作者Mayanktechpro
相关产品推荐
相关产品推荐

