Sql 从多个表中选择“最大值”和“总和”
我有三张桌子:Sql 从多个表中选择“最大值”和“总和”,sql,mysql,group-by,Sql,Mysql,Group By,我有三张桌子: 天气数据(每小时数据、降雨) 天气数据计算(每小时数据、计算值) 每日天气数据(每日日期、每日值) 我想使用以下选项从这3个表中获取每日价值列表: SELECT daily_date, daily_value, SUM(rain), MAX(calc_value) 一天中的所有小时都需要计算总和和最大值 这就是我所做的: SELECT date_format(convert_tz(daily_date, 'GMT', 'America/Los_Angeles'), '%Y-
- 天气数据(每小时数据、降雨)
- 天气数据计算(每小时数据、计算值)
- 每日天气数据(每日日期、每日值)
SELECT daily_date, daily_value, SUM(rain), MAX(calc_value)
一天中的所有小时都需要计算总和和最大值
这就是我所做的:
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;
这不起作用,因为在这种情况下,我不知道如何与group by打交道
我也尝试使用临时桌子,但也没有成功
谢谢你的帮助 在您的分组中包括每日的_值,或者使用两个查询。一个包含日期列和两个聚合,另一个包含日期列和每日值。然后,您可以使用单个外部查询来联接日期列上的这些结果集
编辑:您在评论中说,在组中包含每日_值意味着查询没有完成。这是因为(可能)在查询包含的所有表之间没有联接条件。这将导致潜在的非常大的结果集,这将花费很长时间。我不介意帮助您使用实际的SQL,但您需要更新您的问题,以便我们可以看到哪些字段来自哪些表。假设您只有一个“天气数据”中的daily\u date、daily\u value条目,您应该 按每日日期、每日值分组,则您的聚合(总和和最大值)将在正确的分组上运行。尝试以下操作:
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的格式。当我尝试运行包含每日值的查询时,它永远不会完成。。。(顺便说一句,不包括它的链接)