SQL - Select from a table from other query



SELECT
sell_table.stock_name,(sell_table.total_sell - buy_table.total_buy) AS capital_gain_loss

FROM

(SELECT SUM(price)as total_sell,stock_name
FROM Stocks
WHERE operation = 'Sell'
GROUP BY stock_name) sell_table ,

(SELECT SUM(price)as total_buy ,stock_name
FROM Stocks
WHERE operation = 'Buy'
GROUP BY stock_name) buy_table

WHERE sell_table.stock_name = buy_table.stock_name

GROUP BY stock_name;


Input: 
Stocks table:
+---------------+-----------+---------------+--------+
| 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  |
+---------------+-----------+---------------+--------+
Output: 
+---------------+-------------------+
| stock_name    | capital_gain_loss |
+---------------+-------------------+
| Corona Masks  | 9500              |
| Leetcode      | 8000              |
| Handbags      | -23000            | 

+---------------+-------------------+ 

留言

此網誌的熱門文章

MAP - Sort with stream

JAVA - DSF Example