Contents
내가 작성한 쿼리
각 주식에 대한 자본 이득/손실을 보고하는 솔루션을 작성하세요. 주식의 자본 이득/손실은 주식을 한 번 또는 여러 번 사고 팔았을 때의 총 이득 또는 손실을 말합니다. 결과 테이블을 순서에 상관없이 반환하세요.
내가 작성한 쿼리
MySQL, Oracle
-- 1. Buy 목록 정렬해서 순서 붙이기
WITH buy_list AS (
SELECT
stock_name,
price AS buy_price,
ROW_NUMBER() OVER (PARTITION BY stock_name ORDER BY operation_day) AS rn
FROM Stocks
WHERE operation = 'Buy'
),
-- 2. Sell 목록 정렬해서 순서 붙이기
sell_list AS (
SELECT
stock_name,
price AS sell_price,
ROW_NUMBER() OVER (PARTITION BY stock_name ORDER BY operation_day) AS rn
FROM Stocks
WHERE operation = 'Sell'
)
-- 3. 같은 stock_name + 같은 rn끼리 매칭
SELECT
b.stock_name,
SUM(s.sell_price - b.buy_price) AS capital_gain_loss
FROM buy_list b
JOIN sell_list s
ON b.stock_name = s.stock_name AND b.rn = s.rn
GROUP BY b.stock_name;
Share article