当前位置: 首页 > article >正文

SQL-leetcode—1393. 股票的资本损益

1393. 股票的资本损益

Stocks 表:

±--------------±--------+
| Column Name | Type |
±--------------±--------+
| stock_name | varchar |
| operation | enum |
| operation_day | int |
| price | int |
±--------------±--------+
(stock_name, operation_day) 是这张表的主键(具有唯一值的列的组合)
operation 列使用的是一种枚举类型,包括:(‘Sell’,‘Buy’)
此表的每一行代表了名为 stock_name 的某支股票在 operation_day 这一天的操作价格。
此表可以保证,股票的每个“卖出”操作在前某一天都有相应的“买入”操作。并且,股票的每个“买入”操作在即将到来的某一天都有相应的“卖出”操作。

编写解决方案报告每只股票的 资本损益。

股票的 资本利得/损失 是指一次或多次买卖该股票后的总收益或损失。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Stocks 表:
±--------------±----------±--------------±-------+
| stock_name | operation | operation_day | price |
±--------------±----------±--------------±-------+
| Leetcode | Buy | 1 | 1000 |
| Corona Masks | Buy | 2 | 10 |
| Leetcode | Sell | 5 | 9000 |
| Handbags | Buy | 17 | 30000 |
| Corona Masks | Sell | 3 | 1010 |
| Corona Masks | Buy | 4 | 1000 |
| Corona Masks | Sell | 5 | 500 |
| Corona Masks | Buy | 6 | 1000 |
| Handbags | Sell | 29 | 7000 |
| Corona Masks | Sell | 10 | 10000 |
±--------------±----------±--------------±-------+
输出:
±--------------±------------------+
| stock_name | capital_gain_loss |
±--------------±------------------+
| Corona Masks | 9500 |
| Leetcode | 8000 |
| 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美元。

题解

编写解决方案报告每只股票的 资本损益。
股票的 资本利得/损失 是指一次或多次买卖该股票后的总收益或损失。

  • 计算逻辑:Buy 买入是负值,卖出时正值,if判断下即可

方法一 group by + sum + if

select
    stock_name,sum(if(operation='Buy',-1,1)*price) as capital_gain_loss
from Stocks
group by stock_name

方法二 group by + sum +case when

select
    stock_name
    ,sum(case when operation='Buy' then price * -1 else price end) as capital_gain_loss
from Stocks
group by stock_name

http://www.kler.cn/a/543955.html

相关文章:

  • Qwen2.5-Max:国内新一代 MoE 大模型的崛起!
  • CCFCSP第34次认证第一题——矩阵重塑(其一)
  • Python:凯撒密码
  • 图像处理篇---基本OpenMV图像处理
  • 如何用.NET Core Identity实现定制化的用户身份验证系统
  • 不到一个月,SQLite 3.49.0来了
  • 如何使用智能化RFID管控系统,对涉密物品进行安全有效的管理?
  • 计算机网络-MPLS基础概念
  • C++ ——基础进阶
  • Seaweedfs(master volume filer) docker run参数帮助文档
  • 性能优化中的服务器与操作系统优化
  • 华为云kubernetes基于keda自动伸缩deployment副本(监听redis队列长度)
  • 在亚马逊云科技上一键自动部署Falcon3大语言模型
  • 11.推荐系统的安全与隐私保护
  • 对gru的理解
  • 【C++八股】C++内存管理
  • 从360度全景照片到高质量3D场景:介绍SC-Omnigs 3D重建系统
  • redis持久化原理相关面试题剖析
  • 期权帮 | 股指期货交易:规则速览与解读!
  • SpringBoot速成(九)获取用户信息 P9-P10
  • git - 克隆带子模块的git工程的方法
  • windows蓝牙驱动开发-支持蓝牙事件通知
  • 为什么 ARCGIS PRO ArcGISIndexingServer.exe 使用大量计算机内存?
  • UGUI下UI元素的position和localPosition
  • 计算机网络和操作系统常见面试题目(带脑图,做了延伸以防面试官深入提问)
  • docker nginx 配置文件详解