我有一个包含列(TRANSACTION_ID、STOCK_NAME、STOCK_ID、VALUE、TYPE)的 SQL 表。该表将不同股票的投资表示为交易。我需要获取 SQL 查询来查找每只股票的总盈利/亏损。
SQL表
1|REL|2624|6653|sell
2|INFY|7660|3064|buy
3|INFY|4361|3117|buy
4|ITC|7292|6865|buy
5|INFY|2187|2618|buy
6|ITC|7292|7313|sell
7|INFY|3478|3196|sell
8|INFY|3472|3105|sell
9|REL|4472|7398|sell
10|INFY|7660|3351|sell
11|REL|4472|7350|buy
12|REL|5833|8240|buy
13|REL|5833|7937|sell
14|INFY|2187|2487|sell
15|REL|7198|7998|sell
16|INFY|3478|2944|buy
17|REL|2624|6985|buy
18|REL|7198|7645|buy
19|INFY|3472|3046|buy
20|INFY|4361|3384|sell
Run Code Online (Sandbox Code Playgroud)
STOCK_ID 代表该股票的 ID,TYPE 代表交易是买入还是卖出。对于每个 STOCK_ID,正好有 1 笔买入交易和 1 笔卖出交易。我需要按如下方式找到每只股票的损益
结果
ITC|448
INFY| 734
REL| -234
Run Code Online (Sandbox Code Playgroud)
我有逻辑和公式,但我不知道如何将其转换为 SQL 查询。
我对每个 STOCK_NAME 的逻辑 ,找到 STOCK_ID 的总和(利润/亏损)为 (TYPE='sell') - (TYPE='buy')。
例如
4|ITC|7292|6865|buy
6|ITC|7292|7313|sell
Run Code Online (Sandbox Code Playgroud)
ITC 损益 = 7313-6865 = 448
这是用于复制数据的 SQL 查询
BEGIN TRANSACTION;
/* Create a table called NAMES */
CREATE TABLE stocks(id integer PRIMARY KEY, …Run Code Online (Sandbox Code Playgroud) sql ×1