如何通过从一个SQL表中提取最大值然后再将最大值提取到另一个SQL表中来连接两个SQL表?
正如其他人所评论的,我现在要添加一些代码: 导入的表如何通过从一个SQL表中提取最大值然后再将最大值提取到另一个SQL表中来连接两个SQL表?,sql,logic,Sql,Logic,正如其他人所评论的,我现在要添加一些代码: 导入的表 表3 表2 现在,我想加入表格。结果示例如下: 将每个日期的最大累计值加入到新表中。因此,尽管2020年1月26日的表3显示了从6、7到8的增长,但我只想要最高的累积数字 感谢您让我知道如何改进我以前的查询。你的意见对我帮助很大 我尝试了Gordon Linoff的方法,用实际的名字来代替(我最初省略了这个名字,因为我认为它们模棱两可) 他的代码如下(我投了更高的票): 但我犯了个错误 Error Code: 1055. Expre
Error Code: 1055. Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'new.t3.Report date' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
不管怎样,我现在正在试验。两个答案都有帮助。如果您知道如何修复1055,请告诉我,或者您是否可以提出其他解决方案。谢谢我不明白为什么表1上有cumulA和cumulB。我想应该是每天存储最大累积量和累积量
SELECT * FROM `t1` LEFT JOIN t2 ON t1.date = t2.date ORDER BY t1.date
您必须首先自联接表2,才能找到每个日期的最大值(按日期分组):
之后,您加入了左表1上的自加入结果表2,每天都有
SELECT * FROM `t1` LEFT JOIN t2 ON t1.date = t2.date ORDER BY t1.date
以下是两个连接点的融合:
SELECT * FROM `t1` LEFT JOIN (
SELECT t2.id, t2.date, cA
FROM t2
JOIN (
SELECT id, MAX(cumulA) AS cA, date AS d2
FROM t2
GROUP BY d2
) AS td
ON t2.id=td.id
AND t2.date=d2
ORDER BY t2.date
) AS tt
ON t1.date = tt.date ORDER BY t1.date
你对cumulB也这么做。
在(我想)之后,将结果插入到表1中
我希望我回答了你的问题
很好的延续
_Teddy我认为您只需要聚合和窗口功能:
select t1.date,
max(max(cumulativea)) over (order by t1.date),
max(max(cumulativeb)) over (order by t1.date)
from table1 t1 left join
table2 t2
on t1.date = t2.date
group by t1.date;
这将返回截至每个日期的两列的最大值,我认为这就是您试图描述的。提供一个fiddle(或创建表+插入脚本)有样本数据和预期结果以及解释。请参阅以表格形式提供样本数据和预期结果,这将有助于其他人快速做出反应。从3月到8月的每个日期(无重复或缺失日期)都显示了保证这一点的约束。表1中的每个日期都相同。cumulativeA和cumulativeB的问题是它们不会同时增加。因此,当您沿着表向下移动时,一次只更改一个(按id的顺序),并且一次只增加一个。同样的。你使用的是MySQL还是Postgresql?
select t1.date,
max(max(cumulativea)) over (order by t1.date),
max(max(cumulativeb)) over (order by t1.date)
from table1 t1 left join
table2 t2
on t1.date = t2.date
group by t1.date;