[英]MYSQL query to return the value with the highest price increase between two days
我有兩張桌子:
價錢
股票日期關閉
AAPL 3/20/2019 100美元
AAPL 3/21/2019 $ 101.5
AAPL 3/22/2019 $ 106.5
GOOG 3/20/2019 100美元
GOOG 3/21/2019 130美元
GOOG 3/22/2019 110美元
MSFT 3/20/2019 $ 184.5
MSFT 3/21/2019 $ 188.5
MSFT 3/22/2019 210美元
IBM 3/20/2019 $ 72
IBM 3/21/2019 70美元
IBM 3/22/2019 10美元
股票
股票交易所
AAPL納斯達克
GOOG納斯達克
MSFT納斯達克
IBM紐約證券交易所
我想要回到“紐約證券交易所”的股票代碼,收盤價從2019-03-20到2019 03-21最高漲幅。 我有:
SELECT DISTINCT T.ticker
FROM PRICE T
WHERE T.ticker IN SELECT D1.ticker, MAX(D1.close-D2.close)
FROM PRICE D1, PRICE D2, STOCK S
WHERE S.exchange='NYSE' AND D1.date = '2019-03-21' AND D2.date = '2019-03-20' AND D1.ticker = D2.ticker GROUP BY D1.ticker)
GROUP BY T.ticker;
但是它返回'ERROR 1064(42000):你的SQL語法有錯誤; 檢查與MySQL服務器版本對應的手冊,以便在'SELECT D1.ticker,MAX(D1.close-D2.close)從PRICE D1,PRICE D2,STOCK S'在第1行'附近使用正確的語法
IBM應該作為輸出返回,因為它是紐約證券交易所唯一的股票代碼。
我是SQL的新手,任何建議都會受到贊賞:)
使用自聯接:
select p1.ticket
from price p1 join
price p2
on p1.ticker = p2.ticker and
p1.date = '2019-03-20' and
p2.date = '2019-03-21'
order by p2.price - p1.price desc
limit 1;
如果您需要交換(您的查詢建議您需要,但解釋未提及),您只需要join
stock
:
select p1.ticket
from price p1 join
price p2
on p1.ticker = p2.ticker and
p1.date = '2019-03-20' and
p2.date = '2019-03-21' join
stock s
on p1.ticker = s.ticker
where s.exchange = 'NYSE'
order by p2.price - p1.price desc
limit 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.