Medium之1393.股票的资本损益***

Stocks 表:

Column NameType
stock_namevarchar
operationenum
operation_dayint
priceint

(stock_name, day) 是这张表的主键
operation 列使用的是一种枚举类型,包括:(‘Sell’,‘Buy’)
此表的每一行代表了名为 stock_name 的某支股票在 operation_day 这一天的操作价格。
保证股票的每次’Sell’操作前,都有相应的’Buy’操作。

问题

编写一个SQL查询来报告每支股票的资本损益。

股票的资本损益是一次或多次买卖股票后的全部收益或损失。

以任意顺序返回结果即可。

示例

Stocks 表:

stock_nameoperationoperation_dayprice
LeetcodeBuy11000
Corona MasksBuy210
LeetcodeSell59000
HandbagsBuy1730000
Corona MasksSell31010
Corona MasksBuy41000
Corona MasksSell5500
Corona MasksBuy61000
HandbagsSell297000
Corona MasksSell1010000

Result 表:

stock_namecapital_gain_loss
Corona Masks9500
Leetcode8000
Handbags-23000

Leetcode 股票在第一天以1000美元的价格买入,在第五天以9000美元的价格卖出。资本收益=9000-1000=8000美元。
Handbags 股票在第17天以30000美元的价格买入,在第29天以7000美元的价格卖出。资本损失=7000-30000=-23000美元。
Corona Masks 股票在第1天以10美元的价格买入,在第3天以1010美元的价格卖出。在第4天以1000美元的价格再次购买,在第5天以500美元的价格出售。最后,它在第6天以1000美元的价格被买走,在第10天以10000美元的价格被卖掉。资本损益是每次(’Buy’->‘Sell’)操作资本收益或损失的和=(1010-10)+(500-1000)+(10000-1000)=1000-500+9000=9500美元。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/capital-gainloss
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解答

思路太绝了吧,-price!

select stock_name,
    sum(case when operation = 'buy' then -price
            else price end) capital_gain_loss
from stocks
group by stock_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值