sum case when的使用

在SQL中,SUM 与 CASE WHEN 的结合常用于条件聚合,即根据某些条件对数据进行分组并求和。以下是一个基本的例子,展示了如何使用 SUM 和 CASE WHEN 语句。

假设我们有一个名为 orders 的表,其中包含以下字段:

  • order_id (订单ID)
  • product_id (产品ID)
  • quantity (购买数量)
  • status (订单状态,如 'shipped', 'cancelled', 'pending' 等)

如果我们想计算已发货('shipped')的产品的总数量,我们可以使用 SUM 和 CASE WHEN 语句如下:

SELECT   
    SUM(CASE WHEN status = 'shipped' THEN quantity ELSE 0 END) AS total_shipped_quantity  
FROM   
    orders;

在这个查询中:

  • CASE WHEN status = 'shipped' THEN quantity ELSE 0 END:这部分为每一行订单计算一个新的值。如果订单的状态是 'shipped',则取 quantity 的值;否则,取0。
  • SUM(...):这部分对 CASE WHEN 语句的结果进行求和,从而得到所有已发货产品的总数量。

我们还可以通过在 CASE WHEN 语句中添加多个条件来进一步细化我们的聚合逻辑。例如,如果我们还想计算已取消('cancelled')的产品的总数量,我们可以这样做:

SELECT   
    SUM(CASE WHEN status = 'shipped' THEN quantity ELSE 0 END) AS total_shipped_quantity,  
    SUM(CASE WHEN status = 'cancelled' THEN quantity ELSE 0 END) AS total_cancelled_quantity  
FROM   
    orders;

在这个查询中,我们为每种状态('shipped' 和 'cancelled')都添加了一个 SUM(CASE WHEN ...) 表达式,并分别为它们取了别名(total_shipped_quantity 和 total_cancelled_quantity)。这样,我们就可以在同一查询中同时获取已发货和已取消的产品的总数量了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值