前言
练习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
结果:

总结:
能运行就行。
文章指导如何通过SQL查询力扣平台的股票交易数据,计算每只股票的资本利得/损失,涉及买入和卖出操作的金额计算。

被折叠的 条评论
为什么被折叠?



