私は株式データベースのクエリを書いており、毎年の価格上昇の上位5つの株式(2010年〜2016年)を探しています。今、私はこのようにそれを書いています:このクエリを書くためのより良い/より簡潔な方法がありますか?
(
SELECT Ticker, Year, MAX(High - Low)
FROM Stocks
WHERE Year = 2010
GROUP BY Ticker
ORDER BY MAX(High - Low) DESC
LIMIT 5
)
UNION ALL
(
SELECT Ticker, Year, MAX(High - Low)
FROM Stocks
WHERE Year = 2011
GROUP BY Ticker
ORDER BY MAX(High - Low) DESC
LIMIT 5
)
UNION ALL
と、毎年2016
まで、create table文であることを繰り返し:
CREATE TABLE Stocks (
Year DATE
Ticker VARCHAR(8),
High FLOAT,
Low FLOAT,
Volume FLOAT,
PRIMARY KEY(Ticker, Year)
);
し、得られたデータセットものになるだろうこのように:
Year Ticker MAX(High - Low)
---------------------------------
2010 GOOG 100
2010 FB 99
2010 AAPL 98
2010 NFLX 97
2010 ABCD 96
2011 FB 120
2011 ABCD 112
etc... (Top 5 in terms of high-low per year)
これを書くには、より簡潔な方法がありますか?
はい。 https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-be-a-very-simple-sql-queryを参照してください。 – Strawberry
@Strawberry申し訳ありませんが、私の質問にそのリンクがどのように答えるかはわかりません。私はcreate tableステートメントと望みの結果セットを追加して答えやすいようにすべきだと言っていますか? –
他にどのような解釈がありますか? – Strawberry