У меня есть 3 таблицы:
Я хотел бы получить список значений DAILY из этих трех таблиц, используя этот выбор:
SELECT daily_date, daily_value, SUM(rain), MAX(calc_value)
SUM и MAX необходимо выполнить в течение всего часа дня.
Это то, что я сделал:
SELECT
date_format(convert_tz(daily_date, 'GMT', 'America/Los_Angeles'), '%Y-%m-%d 00:00:00') as daily_date_gmt,
daily_value,
SUM(rain),
MAX(calc_value)
FROM weather_data_daily wdd, weather_data wd, weather_data_calculated wdc
WHERE daily_date_gmt=date_format(convert_tz(wd.hourly_date, 'GMT', 'America/Los_Angeles'), '%Y-%m-%d 00:00:00')
and daily_date_gmt=date_format(convert_tz(wdc.hourly_date, 'GMT', 'America/Los_Angeles'), '%Y-%m-%d 00:00:00')
group by daily_date_gmt
order by daily_date_gmt;
Это не сработало, потому что я не знаю, как в этом случае иметь дело с группой.
Я также пытаюсь использовать временную таблицу, но без успеха.
Спасибо за вашу помощь!
Либо включать daily_value в вашу группу, либо использовать два запроса. Один будет содержать столбец даты и два агрегата, другой будет содержать столбец даты и ежедневное значение. вы можете использовать один внешний запрос для объединения этих наборов результатов в столбце даты.
EDIT: в своем комментарии вы говорите, что включая daily_value в группе, если запрос не завершен. Это связано с тем, что (возможно) у вас нет критериев соединения между всеми таблицами, к которым относится ваш запрос. Это приведет к потенциально ОЧЕНЬ большому набору результатов, который займет очень много времени. Я не против помогать с фактическим SQL, но вам нужно будет обновить свой вопрос, чтобы мы могли видеть, какие поля поступают из этих таблиц.
попробуйте следующее:
select a.daily_date, a.daily_value, SUM(b.rain), MAX(c.calc_value)
from weather_data_daily a,weather_data b,weather_data_calculated c
where convert(varchar, a.daily_date, 101)=convert(varchar, b.hourly_date, 101)
and convert(varchar, a.daily_date, 101)=convert(varchar, c.hourly_date, 101)
group by a.daily_date, a.daily_value
Вам нужно как-то соединить таблицы (это использует внутреннее соединение). Это требует получения почасовых дат и других дат в том же формате. Это дает им формат MM/DD/YYYY.
Предполагая, что у вас есть только одна запись для day_date, daily_value в 'weather_data_daily', вы должны GROUP BY daily_date, daily_value, то ваши агрегации (SUM и MAX) будут работать с правильной группировкой.