Что не так с этим запросом MySQL? - PullRequest
2 голосов
/ 16 марта 2011
SELECT STOCK_SYMBOL FROM daily
WHERE DAILY_DATE > '2011-03-01 23:59:59'
GROUP BY STOCK_SYMBOL HAVING MAX(DAILY_CHANGE_PERCENT) < -0.1

Это моя структура:

STOCK_ID    STOCK_SYMBOL    DAILY_DATE            DAILY_CHANGE_PERCENT
1           GOOG            2011-03-03 01:01:01   -0.300

Я пытаюсь получить только те акции, которые на каждую дату в этом диапазоне дат DAILY_CHANGE_PERCENT ниже -0,1

в данный момент я получаю смешанные результаты.

Пример правильного результата:

STOCK_ID    STOCK_SYMBOL    DAILY_DATE            DAILY_CHANGE_PERCENT
1           GOOG            2011-03-03 01:01:01   -0.300
1           GOOG            2011-03-04 01:01:01   -0.110
1           GOOG            2011-03-05 01:01:01   -0.500
1           GOOG            2011-03-06 01:01:01   -0.200

Спасибо

Ответы [ 3 ]

1 голос
/ 16 марта 2011

Чтобы получить "valid result" со всеми столбцами, это то, что вы использовали?

SELECT daily.STOCK_ID, STOCK_SYMBOL, DAILY_DATE, DAILY_CHANGE_PERCENT
FROM daily
join (
    SELECT STOCK_ID
    FROM daily
    WHERE DAILY_DATE > '2011-03-01 23:59:59'
    GROUP BY STOCK_ID
    HAVING MAX(DAILY_CHANGE_PERCENT) < -0.1
) X ON X.STOCK_ID = daily.STOCK_ID
WHERE DAILY_DATE > '2011-03-01 23:59:59'

Я поменялся на stock_id в случае дублирования символов.
Обратите внимание, что я использую фильтр датыв два раза.

0 голосов
/ 16 марта 2011

Какой тип данных у вас в столбце DAILY_CHANGE_PERCENT?если это varchar или около того, ниже-не будет работать.

В противном случае - я смотрю на ваш запрос, и он вроде бы в порядке.

ОБНОВЛЕНИЕ

Или попробуйте это:

SELECT STOCK_SYMBOL 
FROM daily
GROUP BY STOCK_SYMBOL 
HAVING MAX(DAILY_CHANGE_PERCENT) < -0.1 AND DAILY_DATE > '2011-03-01 23:59:59'
0 голосов
/ 16 марта 2011

Вам нужен отдельный набор символов акций, где есть какое-либо падение цены в течение указанного периода И вы хотите удалить из этого набора символов акций любую акцию, цена которой выросла в любой день указанного периода.Простой поиск максимального падения меньше, чем «х», не исключает акций, которые, возможно, выросли в какой-то момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...