如何合并两个SQL查询结果计算全品牌与新品牌的销量差值
SQL合并查询解决方案
实现思路
直接基于单表做条件聚合即可,无需多表关联,执行效率更高:
- 按
InvoiceDate、Region两个字段分组 - 用
CASE WHEN条件判断分别统计新品牌、全品牌的销量总和 - 差值直接通过两个聚合结果相减得到
最终SQL语句
SELECT InvoiceDate, 'New' AS Brand, Region, SUM(CASE WHEN Brand = 'New' THEN Quantity ELSE 0 END) AS `Quantity for 'New' Brand`, SUM(Quantity) AS `Quantity for All Brand`, SUM(Quantity) - SUM(CASE WHEN Brand = 'New' THEN Quantity ELSE 0 END) AS Difference FROM TotalSales GROUP BY InvoiceDate, Region
补充说明
Brand字段固定返回New,完全匹配预期输出结构- 如果使用SQL Server这类数据库,别名的反引号可以替换为方括号
[]即可正常执行 - 若部分分组下无新品牌销量,会自动返回0,不会出现空值计算异常
内容的提问来源于stack exchange,提问作者Nesma Huda
相关产品推荐
相关产品推荐

