2013-04-11 51 views
-1

我有一張名爲eod的表,並且有一個示例。SQL - 多個請求中只有一個

| eod_id | company_symbol | date | open | close | high | low | 
|  1 |   AAA | 01-01-2000 | 40.00 | 42.00 | 43.00 | 39.00 | 

對於給定的company_symbol,我想:

  1. 計算(開放的日期)/(接近爲其他日期) - 1
  2. 計數的行,其中開放>靠近
  3. 算上行,其中開<接近
  4. 爲每一天的次數,其中company_symbol具有最高收盤
  5. 每天,company_symbol有 最低關閉次數

我試圖獲取我想要的信息,但是我沒有成功。 只有一個請求可以獲得5個信息嗎?

希望你能幫助我,謝謝 ,

史蒂夫

PS:我試了一下:

1.

SELECT (SELECT OPEN FROM eod WHERE company_symbol="AAPL" AND DATE="2013-04-05") 
/(SELECT OPEN FROM eod WHERE company_symbol="AAPL" AND DATE="2000-01-03") - 1; 

2.

SELECT COUNT(*) FROM eod WHERE company_symbol="AAPL" AND CLOSE>OPEN; 

3.

SELECT COUNT(*) FROM eod WHERE company_symbol="AAPL" AND CLOSE<OPEN; 
  1. SELECT COUNT(*)FROM EOD WHERE company_symbol IN(SELECT company_symbol FROM EOD WHERE關閉(SELECT MAX(CLOSE)FROM EOD GROUP BY DATE));

但是這一個不起作用,你能幫助我嗎? 我也認爲這些請求可以簡化,但我不知道如何。

+4

你能告訴我們你試過什麼,所以我們可以指出任何可能的更正 – CloudyMarble 2013-04-11 09:59:17

+0

我在我的第一篇文章中添加了它 – user2269756 2013-04-12 08:41:32

+0

任何想法?在此先感謝 – user2269756 2013-04-15 06:09:53

回答

0

如果你只需要組「中只有一個要求5級的信息」,儘量讓5個請求你想要的東西,然後就

SELECT 
(%your_request1%) as 'Request 1', 
(%your_request2%) as 'Request 2', 
(%your_request3%) as 'Request 3', 
(%your_request4%) as 'Request 4', 
(%your_request5%) as 'Request 5' 
FROM EOD e 
WHERE company_symbol=AAA 

,或者你還需要這5個請求?

+0

是的,我想分組這5個請求,但通過這樣做,我會讀5次表。爲了提高性能,我想讀一次表格。感謝您的幫助 – user2269756 2013-04-11 11:46:42

+0

您是否真的需要這種性能提升?你是否在%a_lot%次運行這個查詢並且缺乏性能? – 2013-04-11 11:49:58

+0

我添加了我在第一篇文章中提出的請求。表中大約有150萬行,一個請求大約需要2秒。你能幫我簡化我的請求嗎? – user2269756 2013-04-12 08:41:52

相關問題