Внутреннее соединение по вычисляемому столбцу - PullRequest
0 голосов
/ 20 ноября 2018

У меня возникли проблемы при написании запроса, который выполняет внутреннее соединение.

В моей таблице базы данных есть столбцы Дата, Высокая температура, Низкая температура. Я хочу рассчитать такие вещи, как самая высокая температура по месяцам года, извлекая дату, когда они произошли одновременно. Это прекрасно работает, используя запрос ниже:

SELECT ds.Date, 
    MONTH(ds.Date) AS Month, 
    ds.HighTemperature 
FROM WeatherData.DailyStats ds 
INNER JOIN (SELECT MONTH(Date) AS Month, 
        Date, 
        MAX(HighTemperature) AS HighTemperature 
    FROM WeatherData.DailyStats GROUP BY Month) ds2 
    ON MONTH(ds.Date) = MONTH(ds2.Date) AND ds.HighTemperature = ds2.HighTemperature 
ORDER BY MONTH(ds.Date), ds.DATE ASC

Это дает мне 12 строк, по одному на каждый месяц года. Каждая строка содержит номер месяца, самую высокую температуру, зарегистрированную в этом месяце, и дату, когда она произошла.

Теперь, когда у меня нет успеха, я пытаюсь сделать что-то немного более хитрое - вместо того, чтобы выполнять запрос непосредственно по HighTemperam, я хочу найти самые высокие дневные диапазоны температуры для каждого месяца, то есть получить один и тот же вид результаты для (HighTemperature - LowTemperature) AS TemperatureRange.

Как мне изменить запрос, чтобы сделать это?

1 Ответ

0 голосов
/ 20 ноября 2018

Ах, понял!

Проблема, с которой я столкнулся, заключалась в том, что в операторе ON я пытался сгруппировать данные по TemperatureRange = ds2.TemperatureRange, где TemperatureRange пришел из первого запроса.

Вместо этогоесли я заменю его на ds.HighTemperature - ds.LowTemperature = ds2.TemperatureRange все хорошо!

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