另一个表中的MySQL Group by Max()值(按日期)(每天一个)
我有两张桌子: 数据:另一个表中的MySQL Group by Max()值(按日期)(每天一个),mysql,Mysql,我有两张桌子: 数据: id, name, surname, date, result 统计数据: id, average, type 我试图得到一个表结果,每个日期有一条记录,最大平均值来自表“stats” 例如 到目前为止,我尝试了一些查询,如(没有成功): 我怎样才能让它工作?谢谢您的数据模型似乎非常糟糕。为什么日期在数据表中,而不是状态表中 在任何情况下,您都要处理“日期”/“平均值”对,因此需要将表连接在一起两次: SELECT d.*, s.* FROM Data d JOIN
id, name, surname, date, result
统计数据:
id, average, type
我试图得到一个表结果,每个日期有一条记录,最大平均值来自表“stats”
例如
到目前为止,我尝试了一些查询,如(没有成功):
我怎样才能让它工作?谢谢您的数据模型似乎非常糟糕。为什么日期在
数据
表中,而不是状态
表中
在任何情况下,您都要处理“日期”/“平均值”对,因此需要将表连接在一起两次:
SELECT d.*, s.*
FROM Data d JOIN
Stats s
ON d.id = s.id JOIN
(SELECT d2.date, MAX(s2.average) as max_average
FROM Data d2 JOIN
Stats s2
ON d2.id = s2.id
WHERE s2.type = 'A'
) sd2
ON sd2.date = d.date AND sd2.max_average = s.average
WHERE s2.type = 'A'
ORDER BY d.date DESC ;
我假设表名周围的单引号是转录错误。谢谢。是的,这是一个有点复杂的结构,不是理想的解决方案,但它比那个更复杂。您提供的解决方案正在on子句中的未知列“d.id”处停止
SELECT * FROM 'Data'
JOIN 'Stats' ON Data.id = Stats.id
INNER JOIN
( SELECT MAX(average)
FROM 'Stats'
WHERE Stats.type = 'A'
GROUP BY Data.date
) 'Data' ON Stats.id = Data.id
ORDER BY Data.date DESC
SELECT d.*, s.*
FROM Data d JOIN
Stats s
ON d.id = s.id JOIN
(SELECT d2.date, MAX(s2.average) as max_average
FROM Data d2 JOIN
Stats s2
ON d2.id = s2.id
WHERE s2.type = 'A'
) sd2
ON sd2.date = d.date AND sd2.max_average = s.average
WHERE s2.type = 'A'
ORDER BY d.date DESC ;