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)进行分组。 

你可能感兴趣的:(mysql,数据库)