sqlite - SQLite3根据列创建两次合并行的视图利润
问题描述
给定一张桌子
symbol|action|quantity|price
foo|buy|1|-10.00
foo|sell|1|10.50
bar|buy|1|-50.00
bar|sell|1|50.50
我正在尝试创建一个显示每个符号利润的视图
我已经尝试了以下几种变体,有多个“order by”,但没有得到预期的输出
create view if not exists profit_view as select symbol,sum(price * quanity) as profit from trans group by symbol;
我想要的是一个显示或接近的视图
symbol|profit|percent
foo|.50|5
解决方案
假设每个品种只有一个买卖记录,我们可以尝试:
SELECT
symbol,
SUM(quantity*price) AS profit,
100.0 * SUM(quantity*price) /
ABS(MAX(CASE WHEN action = 'buy' THEN quantity*price END)) AS percent
FROM trans
GROUP BY
symbol;
推荐阅读
- android - 在实施 firebase 后,许多导入语句突然变得未使用并且无法解析许多符号
- botframework - Microsoft Healthbot API 获取场景堆栈信息
- javascript - 在函数中调用 React Hook “useSelector”
- save - PIL 使用没有文件名的文件对象保存
- c++ - 在 msvc 调试模式下堆栈中有 cdcdcdcd 是否正常
- mysql - 如何使用外键执行 MySQL 批量插入并在无效时设置为 NULL
- ruby - 如何优化 HTTP::Headers.normalize_header?
- javascript - Angular 8 多重过滤器
- go - 将 uint32 的字节附加到字节片?
- python - 如何将列表复制到另一个变量并使该变量不可变?