Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从多个表中选择“最大值”和“总和”_Sql_Mysql_Group By - Fatal编程技术网

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-

我有三张桌子:

  • 天气数据(每小时数据、降雨)
  • 天气数据计算(每小时数据、计算值)
  • 每日天气数据(每日日期、每日值)
我想使用以下选项从这3个表中获取每日价值列表:

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的格式。

当我尝试运行包含每日值的查询时,它永远不会完成。。。(顺便说一句,不包括它的链接)