前言
练习sql语句,所有题目来自于力扣(https://leetcode.cn/problemset/database/)的免费数据库练习题。
今日题目:
1393.股票的资本亏损
表:Stocks
列名 | 类型 |
---|---|
stock_name | varchar |
operation | enum |
operation_day | int |
price | int |
(stock_name, day) 是这张表的主键(具有唯一值的列的组合)operation 列使用的是一种枚举类型,包括:(‘Sell’,‘Buy’)此表的每一行代表了名为 stock_name 的某支股票在 operation_day 这一天的操作价格。此表可以保证,股票的每个“卖出”操作在前一天都有相应的“买入”操作。并且,股票的每个“买入”操作在即将到来的一天都有相应的“卖出”操作。
编写解决方案报告每只股票的 资本损益。
股票的 资本利得/损失 是指一次或多次买卖该股票后的总收益或损失。
以 任意顺序 返回结果表。
我那不值一提的想法:
- 首先梳理表内容,题干一共给了一张股票表,记录了股票名,操作状态,操作日期以及价格。
- 其次分析需求,需要找到每只股票的资本损益
- 根据规律,买入一支股票就会从总资金里面减去买入这支股票的钱
- 所以这里使用逻辑判断语句,当operation的操作是buy的时候,就-price也就是失去的资金,否则就是price,意思是得到的资金。
select stock_name,sum(if(operation = "buy",-price,price)) as capital_gain_loss
from Stocks
group by stock_name
结果:
总结:
能运行就行。