MySQL--case语句 简单明了

CASE语句回顾:

· case语句格式一

CASE input_expression
    WHEN expression1 THEN result_expression1
    WHEN expression2 THEN result_expression2
    [...n]
    ELSE result_expression
    END

 CASE后面有表达式时,将CASE后的表达式的值与各WHEN子句的表达式值比较,如果相等,则执行THEN后面的表达式或语句,然后跳出CASE语句;否则,返回ELSE后面的表达式。

· case语句格式二

CASE
    WHEN expression1 THEN result_expression1
    WHEN expression2 THEN result_expression2
    [...n]
    ELSE result_expression
    END

CASE后面没有表达式时,多个WHEN子句中的表达式依次执行,如果表达式结果为真,则执行相应THEN关键字后面的表达式或语句,执行完毕之后跳出CASE语句。如果所有WHEN语句都为FALSE,则执行ELSE子句中的语句。

小tips:在交换数据和列转行时可以考虑使用case语句

代码实例

SELECT stock_name,
        SUM(
            CASE operation
            WHEN 'sell' THEN price 
            ELSE -price  
            END                  
           ) AS capital_gain_loss      
FROM Stocks
GROUP BY stock_name 
select
    stock_name,
    sum(
        case
        when operation = 'Buy' then -price
        when operation = 'Sell' then price
        end
    ) as capital_gain_loss
from stocks
group by stock_name

(为了让你们更好的理解,所以一段SQL写了两种不同的表达方式) 

这段SQL 查询计算每个股票(stock_name)的总资本收益/损失(capital_gain_loss)。对于每个股票,它会将所有的卖出(operation='sell')操作的价格(price)相加,并将所有的买入(operation='buy')操作的价格取相反数后相加。最终的结果以股票名称(stock_name)进行分组。 

  • 15
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值