题87:
根据下表编写一个SQL查询来报告每支股票的资本损益,股票的资本损益是一次或多次买卖股票后的全部收益或损失。
其中:stock_name, day是主键,operation 列使用的是一种枚举类型,包括:(‘Sell’,‘Buy’),此表的每一行代表了名为 stock_name 的某支股票在 operation_day 这一天的操作价格,保证股票的每次’Sell’操作前,都有相应的’Buy’操作。
解题思路:
(1)通过group by实现对组数据处理
(2)利用sum进行数据统计
(3)通过case(when then)end对特定数据处理
select stock_name,
sum(
case when operation="Buy" then -price else price end
) capital_gain_loss
from Stocks
group by stock_name;