首页 >数据库 >mysql教程 >如何在 MSSQL 中通过查询计算分组内的条件总和?

如何在 MSSQL 中通过查询计算分组内的条件总和?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-08 07:36:41202浏览

How to Calculate Conditional Sums within a Group By Query in MSSQL?

在 MSSQL 分组查询中进行条件求和

在 SQL Server 的 OrderDetails 表中,每个订单项都有一个唯一的 OrderId,以及相关的成本 (CopyCost、FullPrice) 和价格类型 (PriceType)。目标是创建一个包含三列的汇总表:OrderId、ItemCount、TotalCopyCost 和 TotalFullPrice,其中 ItemCount 是每个订单的项目数量,TotalCopyCost 是每个订单的 CopyCost 值之和,TotalFullPrice 是每个订单的 FullPrice 值之和。

为此,可以使用带有条件求和的分组查询:

<code class="language-sql">SELECT OrderId, 
       COUNT(*) AS ItemCount,
       SUM(CASE WHEN PriceType = 'CopyCost' THEN Price ELSE 0 END) AS TotalCopyCost,
       SUM(CASE WHEN PriceType = 'FullPrice' THEN Price ELSE 0 END) AS TotalFullPrice
  FROM OrderDetails
 GROUP BY OrderId</code>

在此查询中:

  • COUNT(*) 表达式计算 ItemCount。
  • 两个 SUM(CASE) 表达式根据 PriceType 列执行条件求和。如果 PriceType 为 CopyCost,则 CASE 表达式计算结果为 Price 本身;否则,计算结果为 0。然后,SUM 函数将每个订单的值相加。类似地,第二个 CASE 表达式处理 FullPrice 的求和。

通过使用条件求和,查询有效地计算每个订单的总成本和全价,并按 OrderId 对结果进行分组。生成的汇总表提供了原始数据的综合视图,使分析订单相关费用更容易。

以上是如何在 MSSQL 中通过查询计算分组内的条件总和?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn